VBA过滤函数

VBA Filter function

我做错了什么?

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" 时,出现 "mismatch" 错误?。为什么?

ID和No是"named ranges" ID是字符串,No是数字

您不需要变体数组,您只需要恰好是数组的变体。

Dim Found() As Variant
Dim Found1 As Variant

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

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

这就是我现在所在的位置

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

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