我正尝试使用该表中单独列的条件将表数据过滤到数组中。
我可以在工作表上用一个简单的公式创建一个溢出数组来实现这一点。
=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
如果Name出现在数组中,我最终将使用该数组来测试其他表。
2条答案
按热度按时间uhry853o1#
使用这种方法无法实现这一点,主要是因为在VBA中不能将数组直接与单个值进行比较并返回数组。
你可以做的是使用Evaluate与你已经有了公式。
vcirk6k62#
如果你不能在这个帖子中使用@Norie提供的非常有创意的答案,你的问题也是answered here。但是阅读了所有的解决方案,我想知道它们是否值得努力。所以,这里有一个更缓慢的方法来达到同样的结果。如果你的表中的行数不是很大,这可能是你最好的选择。
使用下面的小程序进行测试。