excel - 在 VBA 中使用索引匹配函数从不同工作表上的表中查找附加数据
问题描述
我在 A1:O27 的每张表上有 6 个表...我正在尝试使用索引和匹配从这些表中获取数据;名称 (A1:O1) 和用户输入值 (A2:O27)。我已经让它在一个普通的 excel 电子表格上工作,但它非常草率。我想制作一个整体功能来为我进行搜索。目标是先搜索名称,获取列值,然后找到用户输入值对应的行。然后,使用已知行,我需要索引到倒数第二列,以获得相应的值作为函数的输出。如果每个表格的尺寸和布局都相同,我该如何根据用户输入更改工作表。是否需要将其放入循环中以搜索正确的位置,或者我可以只使用索引/匹配功能吗?这是我到目前为止所拥有的:
Function findSPL(Sonar As String, Distance As String, Condition As String) As String
Dim sonarcol As Range
Dim Dis As Range
Dim c2 As Integer
Dim r2 As Integer
'Set sonarcol to be equal to the "headers"'
'Set Dis to be equal to the table's data'
'Condition is equal to the selected table from drop down list user selects'
Set sonarcol = Worksheets(Condition).Range("A1:O1")
Set Dis = Worksheets(Condition).Range("A2:O27")
'First find the Column value that has the Sonar's name (Exact)'
'Using the column value in c2, find the row that has the user input distance'
c2 = Application.WorksheetFunction.Match(Sonar, sonarcol, 0)
r2 = Application.WorksheetFunction.Index(Dis, WorksheetFunction.Match(Distance, Dis, 1), c2)
'Use the row value from r2 to find the SPL value from column 14 row r2'
findSPL = Application.WorksheetFunction.Index(Dis, r2, 14)
End Function
该图像显示了使用的表格之一以及我正在尝试做的事情。(找到列号,然后找到相应的行号...从该行号中找到 N (14) = 185 列中的 SPL 值
解决方案
推荐阅读
- c - 用 C 点击网页上的按钮
- java - 变量“j”无法解析为变量 - 二维数组
- swift - DJI Onboard-SDK 到 Mobile-SDK 通信:移动端使用 swift 的问题
- java - Android项目中的Gradle错误
- c++ - C++ std::map 内存泄漏
- html - 我想将我的用户限制为 xxx.xx 格式。我是正则表达式的新手,哪个表达式可以做到这一点?
- python - 如何在 Python 中找到 CSV 文件中的最大数据点?
- amazon-web-services - 从 VPC / Lambda 访问 Parameter Store
- node.js - Nodejs - 对一次返回 Promise 的函数进行大量“X”次调用
- html - 如何垂直对齐 div 并添加直角三角形?