我试图在网上找到解决方案,但无论出于何种原因都找不到任何东西(也许是我缺乏搜索技巧)。我觉得这是一个相当简单的查询。
我正在声明一个数组并使用以下内容为其分配数据,我已经确认它正在工作:
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 列中进行搜索。有没有人可能对最简单的方法有任何建议?
感谢一百万!
如果要避免循环,可以对数组进行切片,因此:
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)
| 归档时间: |
|
| 查看次数: |
96 次 |
| 最近记录: |