我正在尝试使用数组公式中的字符串变量。我之前在VBA中的常规公式中使用过变量,但绝对没问题,但是无论我如何尝试使用字符串连接(&
和"
符号)拆分公式,这似乎都没有。该公式与硬编码的变量配合使用都很好。
该代码在循环内,在当前工作表的3列上匹配3个变量(从工作簿的另一个工作表中拉出)。然后它将返回该行位置(j
),因此行j
中单元格的数据可以在其他地方使用。
在单元格中使用公式时,可以很好地引用其他单元格中的变量。即-
{=MATCH(1,(A:A=H10)*(B:B=H11)*(C:C=H12),0)}
然后我按照下面的代码片段尝试了一些东西,但是遇到运行时错误'1004'
Dim Var1 As String
Dim Var2 As String
Dim Var3 As String
Dim j As Long
Dim test As String
Set Aw = Application.WorksheetFunction
test = "(A:A = """ & Var1 & """)"
j = Evaluate(Aw.Match(1, [1*" & test & "*(B:B = "Hard_Coded_Var2")*(G:G = "Hard_Coded_Var3")], 0))
或者只是
test = Var1
j = Evaluate(Aw.Match(1, [1* (A:A = & test &) *(B:B = "Hard_Coded_Var2")*(G:G = "Hard_Coded_Var3")], 0))
以下变量在硬编码变量时起作用
Dim j As Long
Set Aw = Application.WorksheetFunction
j = Evaluate(Aw.Match(1, [1* (A:A = "Hard_Coded_Var1")*(B:B = "Hard_Coded_Var2")*(G:G = "Hard_Coded_Var3")], 0))
从理论上讲,最终结果将是这样-
j = Evaluate(Aw.Match(1, [1* (A:A = Var1)*(B:B = Var2)*(G:G = Var3)], 0))
我遇到了运行时错误404“应用程序定义或对象定义错误”
非常感谢!
答案 0 :(得分:1)
您需要将公式字符串与Evaluate一起使用以使用数组类型公式:
j = Evaluate("MATCH(1,(A:A=""" & Var1 & """)*(B:B=""" & Var2 & """)*(G:G=""" & Var3 & """),0)")