arrays - 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
解决方案
使用这种方法是不可能做到这一点的,主要是因为在 VBA 中,您不能将数组直接与单个值进行比较并返回一个数组。
您可以做的是将 Evaluate 与您已有的公式一起使用。
Sub myArraySub()
Dim myArray1 As Variant
myArray1 = Evaluate("=FILTER(tblMain[Name],tblMain[At Work]=1)")
End Sub
推荐阅读
- node.js - Argon2 很难在 MacOS 上使用 Angular 8:实际上根本不工作
- javascript - 需要在将数据作为 React 中的道具发送之前将数据提取到数组中
- opencv - 无法从源代码编译 opencv 3.4.4
- rust - Rust 中的生命周期如何影响可变性?
- c++ - 使用 C++ 成员函数处理采用简单静态函数指针的回调
- switch-statement - 除负数时使用绝对值
- c++ - C++ Primer 第 5 版错误 bool 值没有指定最小大小?
- sql - CTE 或不用于计算辅助表中引用的树 id
- python - 多输出回归问题的多重损失
- python - 如何将一个列表中的值添加到另一个列表但前一个列表具有不同数量的元素