Excel文件“A”有650行,每行包含A列中的唯一ID代码。我想在Excel文件“B”中找到650个唯一ID代码,其中包含2500行和相同的唯一标识符代码列。我想将这些记录返回到新表。我几乎尝试了每一个查找,匹配和索引,似乎无法得到我想要的东西。
答案 0 :(得分:0)
如果您不介意使用宏而不是工作表公式,那么这很容易实现。
注意:
使用Alt-F11转到Visual Basic编辑器,选择“插入”>然后模块粘贴以下代码:
Option Explicit
Sub cross_ref()
Dim cn As Object
Set cn = CreateObject("ADODB.Connection")
With cn
.Provider = "Microsoft.ACE.OLEDB.12.0"
.ConnectionString = "Data Source=" & ThisWorkbook.FullName & ";" & _
"Extended Properties=""Excel 12.0 Macro;IMEX=1;HDR=YES"";"
.Open
End With
Dim rs As Object
Set rs = CreateObject("ADODB.Recordset")
rs.Open "SELECT [B$].* " & _
"FROM [A$] INNER JOIN [B$] " & _
"ON [A$].[ID] = [B$].[ID];", cn
Dim sFieldName As String
Dim fld As Object
Dim i As Integer
With ThisWorkbook.Worksheets("C")
.UsedRange.ClearContents
i = 0
For Each fld In rs.Fields
i = i + 1
.Cells(1, i).Value = fld.Name
Next fld
.Cells(2, 1).CopyFromRecordset rs
.UsedRange.EntireColumn.AutoFit
End With
rs.Close
cn.Close
End Sub
现在保存工作簿并通过将光标放在宏中的任意位置并单击“播放”按钮(或按F5)来运行宏
宏连接A和B中的所有行(FROM [A$] INNER JOIN [B$]
部分),这些行具有匹配的ID值(ON [A$].[ID] = [B$].[ID]
部分)并输出B中匹配的所有行( SELECT [B$].*
部分)。宏的其余部分只是设置连接,输出数据并在最后整理