Excel 用变量计算匹配函数

Excel 用变量计算匹配函数,excel,vba,evaluate,excel-match,Excel,Vba,Evaluate,Excel Match,我想通过VBA使用它- =MATCH("PlanA",A:A,0) 使用评估 Sub Test() Dim SectionStartRow As Integer Dim planname As String planname = "PlanA" SectionStartRow = [MATCH(planname,A:A,0)] 'Error 2029 /// Type mismatch '13 End Sub 我已经试过了: SectionStartRow = Evaluate

我想通过VBA使用它-

=MATCH("PlanA",A:A,0)
使用
评估

Sub Test()

Dim SectionStartRow As Integer    
Dim planname As String
planname = "PlanA"

SectionStartRow = [MATCH(planname,A:A,0)] 'Error 2029 /// Type mismatch '13

End Sub
我已经试过了:

SectionStartRow = Evaluate("MATCH(planname,A:A,0)") 'Error 2029 /// Type mismatch '13


但似乎什么都不管用。请注意,
planname
变量被一组长函数拒绝

问题在于
planname
需要用字符串引号括起来。 excel等价物是
=MATCH(“PlanA”,A:A,0)
,传递给
Evaluate
的字符串应与以下字符串相同:

SectionStartRow = Evaluate("=MATCH( " & Chr(34) & planname & Chr(34) & ",A:A,0)")
工作正常(使用Excel 2010进行测试)

Chr(34)
代表ASCII编码中的
符号

另一种方法是定义

planname = Chr(34) & "PlanA" & Chr(34)
然后呢
SectionStartRow=Evaluate(“=MATCH(&planname&”,A:A,0)”)

顺便说一下,我将
SectionStartRow
定义为
Long
,而不是
Integer
,因为如果匹配行在32767之后,
Integer
将抛出错误

还请注意,
Evaluate
(即方括号
[]
)的简写形式在这种情况下不起作用。它仅在以下情况下起作用


我希望这能有所帮助!

我偶然发现了这个有用的问题,不仅在连接
planname
时遇到了困难,还用不同的表格解决了问题

我对Ioannis回答中的双引号和&符号感到困惑。
planname=Chr(34)&PlanA&Chr(34)

在我的示例中,下一行的一个版本正确地解析了第一个参数。因此只有一个&variable&“对我有效


SectionStartRow=Evaluate(=MATCH('Sheet1'!C“&variablename&“,A:A,0)”)

您是否尝试过使用
Application.Worksheetfunction.MATCH
?是的,这很有效,我只是认为最好使用Evaluate。您能在匹配之前插入=符号来尝试最后一个吗?Evaluate(=MATCH(&planname&),A:A,0)”)的结果相同。
planname = Chr(34) & "PlanA" & Chr(34)