循环访问频繁更改的自动筛选器
Looping Through AutoFilters that Frequently Change
我有一个每天都在变化的数据集。我想根据公司名称过滤数据 - "Company 1"、"Company 2"、"Company 3" 等。然后 运行 另一个子项。我目前使用以下代码进行(仅过滤)。
Sub WhosebugQuestion()
Editing_Sheet.Range("$A:$AH69").AutoFilter Field:=1, Criteria1:= _
"Company 1"
Editing_Sheet.Range("$A:$AH69").AutoFilter Field:=1, Criteria1:= _
"Company 2"
Editing_Sheet.Range("$A:$AH69").AutoFilter Field:=1, Criteria1:= _
"Company 3"
Editing_Sheet.Range("$A:$AH69").AutoFilter Field:=1, Criteria1:= _
"Company 4"
Editing_Sheet.Range("$A:$AH69").AutoFilter Field:=1, Criteria1:= _
"Company 5"
End Sub
但由于数据(包括公司名称)在不断变化 - 例如它将一直上升到 "Company 20",排除奇数公司,具有完全不同的名称,如 "New company name 45",等等。这使得很难有一致的代码来完成所有的点击按钮。
我尝试了以下代码(只是为了看看我是否在正确的轨道上,任意使用“50”)来循环所有的自动过滤器选项
Sub LoopThroughAuto
For i = 1 to 50
Editing_Sheet.Range("$A:$AH69").AutoFilter Field:=1, Criteria1:= _
i
next i
但这没有用。无论如何循环所有的自动过滤器选项然后过滤它们?
感谢您的帮助!
Dictionary
对象允许您在 Column A
中创建所有唯一条目的列表。接下来,您可以遍历唯一条目,按每个条目进行过滤。注意:在我下面的代码中,我使用了 A1
的 CurrentRegion
属性。 属性 假设数据是连续的,没有任何空行或空列。必要时更新它。
Sub WhosebugQuestion()
Dim rngCompanyNames As Range
Dim oDictionary As Object
Dim cel As Range
Set oDictionary = CreateObject("Scripting.Dictionary")
Set rngCompanyNames = Intersect(Editing_Sheet.Range("A1").CurrentRegion, Editing_Sheet.Columns(1))
For Each cel In rngCompanyNames
If oDictionary.exists(cel.Value) Then
'Do nothing for now
Else
oDictionary.Add cel.Value, 0
End If
Next cel
For Each oKey In oDictionary.keys
Editing_Sheet.Range("A1").CurrentRegion.AutoFilter field:=1, Criteria1:=CStr(oKey)
'RUN WHATEVER CODE YOU NEED TO RUN NOW
Next oKey
End Sub
我有一个每天都在变化的数据集。我想根据公司名称过滤数据 - "Company 1"、"Company 2"、"Company 3" 等。然后 运行 另一个子项。我目前使用以下代码进行(仅过滤)。
Sub WhosebugQuestion()
Editing_Sheet.Range("$A:$AH69").AutoFilter Field:=1, Criteria1:= _
"Company 1"
Editing_Sheet.Range("$A:$AH69").AutoFilter Field:=1, Criteria1:= _
"Company 2"
Editing_Sheet.Range("$A:$AH69").AutoFilter Field:=1, Criteria1:= _
"Company 3"
Editing_Sheet.Range("$A:$AH69").AutoFilter Field:=1, Criteria1:= _
"Company 4"
Editing_Sheet.Range("$A:$AH69").AutoFilter Field:=1, Criteria1:= _
"Company 5"
End Sub
但由于数据(包括公司名称)在不断变化 - 例如它将一直上升到 "Company 20",排除奇数公司,具有完全不同的名称,如 "New company name 45",等等。这使得很难有一致的代码来完成所有的点击按钮。
我尝试了以下代码(只是为了看看我是否在正确的轨道上,任意使用“50”)来循环所有的自动过滤器选项
Sub LoopThroughAuto
For i = 1 to 50
Editing_Sheet.Range("$A:$AH69").AutoFilter Field:=1, Criteria1:= _
i
next i
但这没有用。无论如何循环所有的自动过滤器选项然后过滤它们?
感谢您的帮助!
Dictionary
对象允许您在 Column A
中创建所有唯一条目的列表。接下来,您可以遍历唯一条目,按每个条目进行过滤。注意:在我下面的代码中,我使用了 A1
的 CurrentRegion
属性。 属性 假设数据是连续的,没有任何空行或空列。必要时更新它。
Sub WhosebugQuestion()
Dim rngCompanyNames As Range
Dim oDictionary As Object
Dim cel As Range
Set oDictionary = CreateObject("Scripting.Dictionary")
Set rngCompanyNames = Intersect(Editing_Sheet.Range("A1").CurrentRegion, Editing_Sheet.Columns(1))
For Each cel In rngCompanyNames
If oDictionary.exists(cel.Value) Then
'Do nothing for now
Else
oDictionary.Add cel.Value, 0
End If
Next cel
For Each oKey In oDictionary.keys
Editing_Sheet.Range("A1").CurrentRegion.AutoFilter field:=1, Criteria1:=CStr(oKey)
'RUN WHATEVER CODE YOU NEED TO RUN NOW
Next oKey
End Sub