两个excel工作簿之间的匹配记录

两个excel工作簿之间的匹配记录,excel,Excel,Excel文件“A”有650行,每行在A列中包含一个唯一的ID代码。我想在Excel文件“B”中找到这650个唯一的ID代码,该文件有2500行,并且有相同的唯一标识符代码列。我想把这些记录换成新的表格。我几乎尝试了每一次查找、匹配和索引,但似乎都找不到我想要的 如果您不介意使用宏而不是工作表公式,那么这很容易实现 注: 假设:两组数据分别位于称为A和B的工作表上的同一工作簿中 假设:要匹配的列在两个工作表上都称为ID 假设:输出应放在名为C的工作表上 在运行宏之前,必须将工作簿另存为.xls

Excel文件“A”有650行,每行在A列中包含一个唯一的ID代码。我想在Excel文件“B”中找到这650个唯一的ID代码,该文件有2500行,并且有相同的唯一标识符代码列。我想把这些记录换成新的表格。我几乎尝试了每一次查找、匹配和索引,但似乎都找不到我想要的

如果您不介意使用宏而不是工作表公式,那么这很容易实现

注:

  • 假设:两组数据分别位于称为A和B的工作表上的同一工作簿中
  • 假设:要匹配的列在两个工作表上都称为ID
  • 假设:输出应放在名为C的工作表上
  • 在运行宏之前,必须将工作簿另存为.xlsm文件
使用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键)


宏将具有匹配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中的记录,您不会说您希望在哪个文件中显示新工作表,还有其他详细信息也失踪了。