VBA过滤功能

时间:2015-02-27 21:13:16

标签: vba filter

我在这里做错了什么?

Dim Found() As Variant
Dim Found1 As Variant

Found = Application.Transpose(Application.Evaluate("=IF((ID=""" & sString1 & """)*(No=Value(""" & sString2 & """)),ROW(ID),""z"")"))

Found1 = Filter(Found, "z", False)

我有一个很好的“Found”数组,其中包含所有“z”:s,只有一个有效命中。但是当我尝试使用Filter函数来消除“z”时,我得到一个“不匹配”错误?为什么?“

ID和No是“命名范围” ID是字符串,No是数字

2 个答案:

答案 0 :(得分:2)

您不希望变种数组只是想要一个恰好是数组的变体。

Dim Found() As Variant
Dim Found1 As Variant

Found = Application.Transpose([A1:A5])

Found1 = Filter(Found, "z", False)

答案 1 :(得分:0)

所以这就是我现在所处的位置

Dim Found() As Variant

        Found = Application.Evaluate("=IF((ID=""" & sString1 & """)*(No=Value(""" & sString2 & """)),ROW(ID),""z"")")

        i = 1
        While Found(i, 1) = "z"
            i = i + 1
        Wend

如果我不能使用Filter那么也不需要转置,我只是遍历数组直到找到我的匹配。我将永远只有一个!我将有多达5000行,因此时间因情况而异。