excel - VBA 中是否有类似索引的函数可以在完美匹配时返回多列数据?
问题描述
我有 2 个包含以下数据的工作簿:
如图所示,A 列是我映射这两个工作簿的唯一键。我要填充的值是原始文件(image1)中的“待定”。所以我在主文件中寻找密钥 11x 并获取该密钥的 B、C 和 D 列(组件、子和零件)的值。
我“尝试”match
了 func 但无法确定复制搜索值的目的地,而且我的代码一次只返回一个值……
for R = 2 To lastrow
y=application.match(worksheet2.cells(R,1), worksheet2.range("A:A"),0)
If not application.isnumber(y) Then
worksheet2.cells(x,1).copy destination:=worksheet1.cells(**?????????**)
那么,我可以使用一个索引匹配公式返回所有三列值吗?如果不是,我如何在 VB 中编写搜索功能?请帮忙。
解决方案
此代码在启动搜索的工作簿中执行。
Private Sub CmdBtn_Click()
On Error GoTo workbookErr
Dim WbMaster As Worksheet: Set WbMaster = Workbooks("MasterWorkBook.xlsm").Worksheets("Sheet1")
Dim WbCopyTo As Worksheet: Set WbCopyTo = ThisWorkbook.Worksheets("Sheet1")
Dim rangeWbCopyTo As Range, rangeWbMaster As Range
Dim cellWbCopyTo As Range, cellWbMaster As Range
Dim i As Integer
With WbMaster
Set rangeWbMaster = .Range("A2:A" & .Cells(.Rows.Count, 1).End(xlUp).Row)
End With
With WbCopyTo
Set rangeWbCopyTo = .Range("A2:A" & .Cells(.Rows.Count, 1).End(xlUp).Row)
End With
For Each cellWbCopyTo In rangeWbCopyTo
For Each cellWbMaster In rangeWbMaster
If cellWbCopyTo.Value = cellWbMaster.Value Then
For i = 0 To 2
cellWbCopyTo.Offset(0, 1 + i).Value = cellWbMaster.Offset(0, 1 + i).Value
Next i
Exit For
End If
Next cellWbMaster
Next cellWbCopyTo
Exit Sub
workbookErr:
MsgBox "Open MasterWorkBook before executing the search.", vbCritical
End Sub
推荐阅读
- sql-server - 如何确定添加的最后一条记录在何处超过 34 天
- php - 将逗号分隔的列值拆分为单独的列
- php - 如果它们在同一台服务器上,是否可以在 Apache 服务器和 NGINX 服务器(运行 PHP)之间共享 SESSION,身份验证机制
- ios - 约束出口位置
- c# - 如何将 2 种不同类型传递给 c# 中的函数参数?
- rust - Rust Borrow Checker 的详细和/或调试输出
- java - 更改 JTable 的选择行为以仅选择行或列中可变数量的单元格
- css - 我怎样才能让我的圈子只用 CSS 响应?
- forms - 将带有宏的 MS word 格式转换为 PDF
- python - Plotly ISO 周开始日