返回二维数组中匹配项的行号

Dam*_*mes 0 excel vba

我试图在网上找到解决方案,但无论出于何种原因都找不到任何东西(也许是我缺乏搜索技巧)。我觉得这是一个相当简单的查询。

我正在声明一个数组并使用以下内容为其分配数据,我已经确认它正在工作:

Dim arr As Variant
arr = Sheet.Range("A1").CurrentRegion
Run Code Online (Sandbox Code Playgroud)

现在,鉴于这是一个二维数组(只有 2 列数据),我想然后使用匹配类型的函数来返回与数组第 1 列中的值关联的行号。我的最终目标是然后使用它来调用数组第 2 列中的相应值 - 本质上是在 VBA 中构建索引/匹配类型的场景。但是,Application.Match 函数失败,因为它不是一维数组。请参阅下面的示例:

1|Apple   |Fruit
2|Tomato  |Fruit
3|Carrot  |Vegetable
4|Zucchini|Vegetable
Run Code Online (Sandbox Code Playgroud)

我想要实现的是像 MATCH("Tomato", arr(), 0) 这样的东西来获得“2”是与番茄关联的行号的结果。我只需要在数组的第 1 列中进行搜索。有没有人可能对最简单的方法有任何建议?

感谢一百万!

SJR*_*SJR 5

如果要避免循环,可以对数组进行切片,因此:

Sub x()

  Dim arr As Variant, v As Variant

  arr = Range("A1").CurrentRegion
  v = Application.Match("Tomato", Application.Index(arr, , 1), 0) 'look in first column
  If IsNumeric(v) Then MsgBox v
End Sub
Run Code Online (Sandbox Code Playgroud)