【问题标题】:Match function? VBA not working properly匹配功能? VBA 无法正常工作
【发布时间】: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

【问题讨论】:

    标签: excel function vba match


    【解决方案1】:

    根据documentation for MATCH:

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

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

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

    所以返回的1指的是B19在数组Range("B19:B30")中的位置,代码示例的行为确实符合预期。

    【讨论】:

      【解决方案2】:
      Application.Match("name", ActiveSheet.Range("B19:B30"), 0)
      

      MATCH函数在一个单元格范围内搜索指定项,然后返回该项在该范围内的相对位置

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

      【讨论】:

        【解决方案3】:

        添加 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)
        

        【讨论】:

          猜你喜欢
          • 2017-09-23
          • 2013-11-06
          • 2013-10-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多