【发布时间】:2013-11-17 08:33:52
【问题描述】:
我有以下代码,我在单元格 B11、B19 和 B25 中有“名称”,我期望代码的结果为 19 或 25,但它返回 Y=1。谁能告诉我是什么问题?
Sub mat()
Y = Application.Match("name", ActiveSheet.Range("B19:B30"), 0)
MsgBox Y
End Sub
【问题讨论】:
我有以下代码,我在单元格 B11、B19 和 B25 中有“名称”,我期望代码的结果为 19 或 25,但它返回 Y=1。谁能告诉我是什么问题?
Sub mat()
Y = Application.Match("name", ActiveSheet.Range("B19:B30"), 0)
MsgBox Y
End Sub
【问题讨论】:
MATCH 返回匹配值在lookup_array 中的位置,而不是值本身。
并使用0作为可选的第三个参数(match_type):
如果 match_type 为 0,MATCH 会找到第一个与 lookup_value 完全相等的值。 Lookup_array 可以是任何顺序。
所以返回的1指的是B19在数组Range("B19:B30")中的位置,代码示例的行为确实符合预期。
【讨论】:
Application.Match("name", ActiveSheet.Range("B19:B30"), 0)
MATCH函数在一个单元格范围内搜索指定项,然后返回该项在该范围内的相对位置
所以解析参数ActiveSheet.Range("B19:B30")意味着B19等于相对位置=1。
【讨论】:
添加 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)
【讨论】: