Я думаю, вы должны дать более подробную информацию о вашей проблеме. Прежде всего, я не вижу индекс столбца группы товаров, но я стараюсь ответить на ваш вопрос как можно больше.
Что я понимаю из вашей проблемы, так это то, что вы слишком часто используете автофильтр, который запускает вычисление рабочей книги каждый раз, когда вы запускаете код, и если у вас есть большие формулы, такие как формулы массива, это действительно может замедлить ваш файл.
Лучшее решение - использовать массивы, но я не могу сообщить подробности, которыми вы делитесь, поэтому я пишу цикл для ваших требований.
Пожалуйста, добавьте новую таблицу в ваш файл с именем Warehouses и запишите названия ваших складов в столбцы A один за другим, скопируйте приведенный ниже код в модуль и запустите его
Sub LoopWareHouses
Dim ws As Worksheet
Dim ws2 As Worksheet
Dim ws3 As Worksheet
Set ws = ThisWorkbook.Sheets("Apex")
Set ws2 = ThisWorkbook.Sheets("Sheet2")
Set ws3 = ThisWorkbook.Sheets("Warehouses")
Lastrow = ws.Range("A1").CurrentRegion.Rows.Count
lrwarehouses = ws3.Cells(Rows.Count, 1).End(xlUp).Row
With Application
.DisplayAlerts = False
.ScreenUpdating = False
.EnableEvents = False
.Calculation = xlCalculationManual
End With
y = 2
For i = 1 To lrwarehouses
For j = 2 To Lastrow
If ws.Cells(j, 6) = "NIO" Then
If ws.Cells(j, 8) = ws3.Cells(i, 1) Then
ws2.Cells(y, 1) = ws.Cells(j, 1)
y = y + 1
End If
End If
Next
Next
lr2 = ws2.Cells(Rows.Count, 1).End(xlUp).Row
Application.Calculate
Do Until Application.CalculationState <> xlDone
DoEvents
Loop
ws2.Range("A1:A" & lr2).RemoveDuplicates Columns:=1, Header:=xlNo
With Application
.DisplayAlerts = True
.ScreenUpdating = True
.EnableEvents = True
.Calculation = xlCalculationAutomatic
End With
End Sub