使用自动筛选器循环列表

我有一个公司名单(listA,位于工作表Workings2)和公司名单(ListB – 每个公司有多个条目,位于工作表数据)附有数据,列表A我希望能够采取一个公司在列B中的一个单元格中),并通过自动筛选器上的listB循环,这样我就可以检查某个列(AZ)是否在特定波段(100,000-500,000)内有一定数量的值。 一旦我有数量的数字,我想把它添加到工作表的工作。 在ListB中的每个公司之后,我想重新设置filter,并为下一个公司filter

我有下面的代码,我拼凑在一起,但它发出了一个古怪的数字,没有任何意义(约3万,当我看着大约100)

Sub calculate1() Dim wsCriteria As Worksheet, wsData As Worksheet, wsDest As Worksheet Dim CompanyListLocation Dim lr As Long, dlr As Long Application.ScreenUpdating = False Set wsCriteria = Sheets("Dashboard") Set wsData = Sheets("Data") Set wsDest2 = Sheets("Workings2") Dim rCell As Range Dim rRng As Range Set rRng = wsData.Range("B3: B418") For i = 0 To 419 With wsData.Rows(1) .AutoFilter Field:=5, Criteria1:=i lr = wsData.UsedRange.Rows.Count dlr = wsDest2.Cells(Rows.Count, 1).End(xlUp).Row + 1 'wsData.AutoFilterMode = False With wsData.Rows(1) .AutoFilter Field:=3, Criteria1:="Forward", Operator:=xlOr, Criteria2:="NDF" If wsDest2.Range("C1:C" & lr).SpecialCells(xlCellTypeVisible).Cells.Count > 1 Then ff = Application.WorksheetFunction.CountIfs(wsData.Range("AZ:AZ"), ">" & 100000, wsData.Range("AZ:AZ"), "<" & 500000) wsDest2.Range("C3").Value = ff End If .AutoFilter End With End With Next i End Sub 

如果有人能帮忙,这将是惊人的

我还不清楚为什么这不是你想要做的。 这似乎是一个更简洁的解决scheme。 您需要将公司filter(例如.AutoFilter Field:=5, Criteria1:=i )添加到COUNTIFS中以获得正确的结果。 COUNTFS不被.AutoFilter过滤。

 =SUM(COUNTIFS(E:E, BB2, AZ:AZ, ">="&BC2, AZ:AZ, "<="&BD2, C:C, {"forward","ndf"})) 

在这里输入图像说明