【问题标题】:How to write array formula in VBA syntax (not Excel-Formula)如何用 VBA 语法编写数组公式(不是 Excel 公式)
【发布时间】:2016-03-31 12:36:29
【问题描述】:

要使用两个条件进行查找,在 Excel-Formula 中,它会写成:

{MATCH(1, 1*(A1:A5=100)*(B1:B5=150), 0)}

如何用 VBA 语法为 WorksheetFunction.Match 函数编写上述公式?

【问题讨论】:

    标签: vba excel syntax match


    【解决方案1】:

    考虑:

    Sub dural()
        Dim m As Long
    
        With Application.WorksheetFunction
            m = .Match(1, [1*(A1:A5=100)*(B1:B5=150)], 0)
        End With
    
        MsgBox m
    End Sub
    

    这显示了工作表中的数组公式和 VBA 等效项。

    【讨论】:

    • 太棒了!非常感谢!
    • @Gary'sStudent 如何使用变量替换 100 和 150?当我用变量填充这些值时出现错误。似乎没有与 & 右连接。
    【解决方案2】:

    我没有足够的代表发表评论.. 这是为了帮助任何人搜索如何将“加里的学生”的答案与变量一起使用。我为此挣扎了一个多小时。 使用的括号 [] 是评估(字符串)的快捷方式 您必须替换它们并将它们包装在评估方法中。 由于参数是字符串,所以你可以用你需要的变量自己构造字符串。

    Sub dural()
    Dim m As Long
    
    With Application.WorksheetFunction
        m = .Match(1, evaluate("1*(A1:A5=100)*(B1:B5=150)"), 0)
    End With
    
    MsgBox m
    

    结束子

    【讨论】:

    • 这信息量太大,不能发表评论! (虽然不确定“评估方法”是什么意思......)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多