首页 > 解决方案 > Excel VBA过滤器到带有条件的数组

问题描述

我正在尝试将表数据过滤到具有来自该表中单独列的条件的数组中,我可以在工作表上使用创建溢出数组的简单公式来实现这一点。

=FILTER(tblMain[Name],tblMain[At Work]=1)

我正在尝试的代码不起作用?

Sub myArraySub()
Dim myTable As ListObject
Dim myArray1 As Variant
Dim myArray2 As Variant
Dim myArray3 As Variant

'Set path for Table variable
    Set myTable = ActiveWorkbook.Worksheets("Main").ListObjects("tblMain")
'Create Array
    myArray1 = Application.Transpose(myTable.ListColumns("Name").DataBodyRange.Value)
    myArray2 = Application.Transpose(myTable.ListColumns("At Work").DataBodyRange.Value)
    myArray3 = Application.Filter(myArray1, myArray2 = 1)
End Sub

我遇到错误并绕着圈子试图解决应该是一个简单的问题。如果名称出现在数组中,我最终将使用该数组来测试其他表。 TIA

标签: arraysexcelvbacriteria

解决方案


使用这种方法是不可能做到这一点的,主要是因为在 VBA 中,您不能将数组直接与单个值进行比较并返回一个数组。

您可以做的是将 Evaluate 与您已有的公式一起使用。

Sub myArraySub()
Dim myArray1 As Variant

    myArray1 = Evaluate("=FILTER(tblMain[Name],tblMain[At Work]=1)")

End Sub

推荐阅读