匹配功能? VBA无法正常工作

时间:2013-11-17 08:33:53

标签: excel function vba match

我有一个以下代码,我在单元格B11,B19和B25中有“名称”,我希望代码的结果为19或25,但它返回Y = 1。谁能告诉我这是什么问题?。

Sub mat()

Y = Application.Match("name", ActiveSheet.Range("B19:B30"), 0)
MsgBox Y

End Sub

3 个答案:

答案 0 :(得分:4)

根据documentation for MATCH

  

MATCH返回lookup_array中匹配值的位置,而不是值本身。

并使用0作为可选的第三个参数(match_type):

  

如果match_type为0,MATCH将找到与lookup_value完全相等的第一个值。 Lookup_array可以按任何顺序排列。

因此,返回的1引用数组B19Range("B19:B30")上的位置,代码示例确实按预期运行。

答案 1 :(得分:1)

Application.Match("name", ActiveSheet.Range("B19:B30"), 0)

MATCH函数搜索一系列单元格中的指定项目,然后返回该项目的相对位置

因此,解析参数ActiveSheet.Range("B19:B30")意味着B19等于相对位置 =1

答案 2 :(得分:0)

添加slgn

Sub mat()
    Y = Application.Match(slng(range("a4").value), ActiveSheet.Range("B19:B30"), 0)
    MsgBox Y
End Sub

EX2:

Application.WorksheetFunction.Match(CLng(TextBox1.Text), sheet110.Range("B6:B" & ls), 0)