使用从另一个表派生的一组条件过滤表

时间:2019-01-18 13:10:23

标签: arrays excel vba loops filter

在另一个question中,我想出了如何过滤另一个表中的每一行的表。现在,我需要再次使用过滤后的表中的一组条件过滤另一个表。

当我使用下面标记的代码时,会收到错误消息;类型不匹配。

最终,我需要打印此循环的每个结果。

编辑:现在已解决此问题。下面的代码非常出色!

    Sub LoopDoorAfdelingV4()

Dim myTable As ListObject
Dim myTable2 As ListObject
Dim c As Long
Dim myArray As Variant


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 = 2 To myTable.ListRows.Count

ActiveSheet.Range(myTable2).AutoFilter Field:=1, Criteria1:=myGroupNameFilter(c)

Set myfilteredgroup = myTable2.ListColumns(2).DataBodyRange.SpecialCells(xlCellTypeVisible)

With Application
    myArray = .Transpose(myfilteredgroup)
End With


Worksheets("Vorige werkdag").Range("$E$2:$P$10000").AutoFilter Field:=5, Criteria1:=myArray, _
Operator:=xlFilterValues

Worksheets("Vorige werkdag").PrintOut Copies:=1, Collate:=True, _
       IgnorePrintAreas:=False

Next c

End Sub

1 个答案:

答案 0 :(得分:0)

我推测这是由于您设置数组的方式会生成2D数组,而Criteria1:=myArray期望有1D数组。

如果数据在列中,则可以使用

With Application
    myArray = .Transpose(myfilteredgroup.SpecialCells(xlCellTypeVisible))
End With

并且如果是连续使用

With Application
    myArray = .Transpose(.Transpose(myfilteredgroup.SpecialCells(xlCellTypeVisible)))
End With