【发布时间】:2023-03-07 11:00:02
【问题描述】:
我正在尝试使用数组公式中的字符串变量。我之前在 VBA 中的常规公式中使用过变量绝对没问题,但无论我如何尝试使用字符串连接(& 和" 符号)拆分公式,它似乎都不需要。该公式适用于硬编码的变量。
代码在一个循环中,匹配当前工作表中超过 3 列的 3 个变量(从工作簿中的另一个工作表中提取)。然后它将返回此行位置 (j),因此行 j 中的单元格中的数据可以在其他地方使用。
在单元格中使用的公式可以很好地引用其他单元格的变量。即 -
{=MATCH(1,(A:A=H10)*(B:B=H11)*(C:C=H12),0)}
然后我尝试了以下 sn-p 的内容,但得到运行时错误“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“应用程序定义或对象定义错误”
非常感谢!
【问题讨论】:
-
即使使用硬编码变量,我也会收到错误消息。你确定它有效吗?据我所知,您需要在引号中使用实际公式,而不是在评估中使用 vba 版本。