【发布时间】:2019-01-18 09:10:58
【问题描述】:
我需要做的是通过使用另一个表中每一行的第二列来过滤一个表。我循环的表包含 11 行,代码循环了 11 次,但每次都使用第 11 行。它需要做的是从第一行到最后一行。
编辑:在 Variatus 的帮助下,我应用了 count 而不是 For Each。这似乎能够遍历所有行,除了最后一行。 待续。
Edit2:对于那些好奇的人,看看我的后续问题,我让一切正常工作! Filter a table with an array of criteria derived from another table
Sub LoopDoorAfdelingV4()
Dim myTable As ListObject
Dim myTable2 As ListObject
Dim oRow As ListRow
Dim c As Long
Dim myGroupIDFilter As Variant
Dim myGroupNameFilter As Variant
Set myTable = ActiveSheet.ListObjects("TabelGroupID")
Set myGroupIDFilter = myTable.ListColumns(1).Range
Set myGroupNameFilter = myTable.ListColumns(2).Range
Set myTable2 = ActiveSheet.ListObjects("TabelAfdelingenIntern")
For c = 1 To myTable.ListRows.Count
ActiveSheet.Range(myTable2).AutoFilter Field:=1, Criteria1:=myGroupNameFilter(c), _
Operator:=xlOr
Next c
End Sub
【问题讨论】:
-
我担心它确实应用了 11 个过滤器,一个接一个,但你只能看到最后一个,因为代码之前没有停止。您可能希望编程的是一个具有 11 个标准的过滤器。您可以在这里找到一些指导:stackoverflow.com/questions/28575754/…
-
感谢您的回答。这可能是最后的手段,因为我以这种方式对其进行了编程,以便可以在不更改代码的情况下扩展 11 行的表。我需要这段代码来查看第一行,然后应用过滤器,然后转到下一行直到最后一行。
标签: excel vba foreach count autofilter