两个excel工作簿之间的匹配记录
Excel文件“A”有650行,每行在A列中包含一个唯一的ID代码。我想在Excel文件“B”中找到这650个唯一的ID代码,该文件有2500行,并且有相同的唯一标识符代码列。我想把这些记录换成新的表格。我几乎尝试了每一次查找、匹配和索引,但似乎都找不到我想要的 如果您不介意使用宏而不是工作表公式,那么这很容易实现 注:两个excel工作簿之间的匹配记录,excel,Excel,Excel文件“A”有650行,每行在A列中包含一个唯一的ID代码。我想在Excel文件“B”中找到这650个唯一的ID代码,该文件有2500行,并且有相同的唯一标识符代码列。我想把这些记录换成新的表格。我几乎尝试了每一次查找、匹配和索引,但似乎都找不到我想要的 如果您不介意使用宏而不是工作表公式,那么这很容易实现 注: 假设:两组数据分别位于称为A和B的工作表上的同一工作簿中 假设:要匹配的列在两个工作表上都称为ID 假设:输出应放在名为C的工作表上 在运行宏之前,必须将工作簿另存为.xls
- 假设:两组数据分别位于称为A和B的工作表上的同一工作簿中
- 假设:要匹配的列在两个工作表上都称为ID
- 假设:输出应放在名为C的工作表上
- 在运行宏之前,必须将工作簿另存为.xlsm文件
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键)
宏将具有匹配ID值的A和B中的所有行(来自[A$]内部联接[B$]部分的
连接起来(来自[A$].[ID]=[B$].[ID]
部分的连接起来),并输出来自B的所有匹配行(来自选择[B$].
部分)。宏的其余部分只是设置连接、输出数据并在结尾进行整理尝试使用VLOOKUP
。您可以将数据合并到一个文件中吗?您可以发布至少一个公式吗?最好是,我们希望看到任何和所有的尝试,以及关于哪些成功/失败的注释。文件“B”中是否有多行与文件“a”中的特定ID匹配?如果是这样,编写一个Excel VBA宏就很容易了,它可以进入文件“A”的A列,搜索文件“B”中的每个条目,并将结果存储在两个文件之一或新文件中的工作表上。做一些研究,写一些代码,向我们展示代码,我们将进一步提供帮助。您不会说同一ID是否可以在A中多次存在,或者同一ID是否可以在B中多次存在,您不会说您是否希望在新工作表上显示A中的记录,或者您是否希望在新工作表上显示B中的记录,您不会说您希望在哪个文件中显示新工作表,还有其他详细信息也失踪了。