eqo03, и еще раз в вашем файле тоже все работает, может у вас отключен автоматический перерасчет формул?
вот попробуйте макрос в модуль листа "HESABAT-MAL" - автоматически будет запускаться при изменении Арт. в ячейка B1
Код |
---|
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("B1")) Is Nothing Then
If IsEmpty(Target) Then Range("A11:L123456").ClearContents: Exit Sub
Dim arr(), arr2()
Dim lr As Long, i As Long, sh2 As Worksheet
Set sh2 = Worksheets("SATISH") ' имя листа где искать и откуда брать информацию
K = 1
lr = sh2.Cells(Rows.Count, 1).End(xlUp).Row ' последняя заполненная строка в столбцу А листа sh2
arr = sh2.Range("A2:P" & lr) 'выгружаем массив исходных данных с листа sh2
x = Application.WorksheetFunction.CountIf(sh2.Columns("M:M"), Range("B5")) 'считаем сколько значений с выбранным Qisaldilmish adi на листе sh2
ReDim arr2(1 To x, 1 To 12) ' создаем пестой массив для данных
For i = LBound(arr) To UBound(arr) 'цикл по массиву 1 от первого до последнего значения
If arr(i, 13) = Range("B5") Then 'проверяем что бы в столбце М был выбран Qisaldilmish adi если это не так идем следуюещму элементу
arr2(K, 1) = arr(i, 1)
arr2(K, 2) = arr(i, 16)
arr2(K, 3) = arr(i, 2)
arr2(K, 4) = arr(i, 3)
arr2(K, 5) = arr(i, 4)
arr2(K, 6) = arr(i, 5)
arr2(K, 7) = arr(i, 6)
arr2(K, 8) = arr(i, 7)
arr2(K, 9) = arr(i, 8)
arr2(K, 10) = arr(i, 9)
arr2(K, 11) = arr(i, 10)
arr2(K, 12) = arr(i, 15)
K = K + 1
End If
Next i
Range("A11:L123456").ClearContents 'очищаем диапазон A11:L123456 для вставки отобранных данных
Range("A11:L" & UBound(arr2) + 10) = arr2 'вставляем данные
End If
End Sub
|