Excel VBA 合并多个表格:按 ID 匹配数据并输出到新工作表
以下是一个使用 VBA 在 Excel 中将 Sheet1 中的三个表格按照 id 进行合并并输出到 Sheet2 的示例代码:\n\nvba\nSub MergeTables()\n Dim ws1 As Worksheet, ws2 As Worksheet\n Dim lastRow1 As Long, lastRow2 As Long\n Dim rng1 As Range, rng2 As Range, cell As Range\n \n ' 设置工作表对象\n Set ws1 = ThisWorkbook.Sheets("Sheet1")\n Set ws2 = ThisWorkbook.Sheets("Sheet2")\n \n ' 获取 Sheet1 中表格的最后一行\n lastRow1 = ws1.Cells(ws1.Rows.Count, "A").End(xlUp).Row\n \n ' 设置 Sheet2 的起始行\n lastRow2 = 1\n \n ' 遍历 Sheet1 中的每个表格\n For Each rng1 In ws1.Range("A1:C" & lastRow1).SpecialCells(xlCellTypeConstants).Areas\n ' 遍历 Sheet2 中已合并的数据,找到最后一行\n lastRow2 = ws2.Cells(ws2.Rows.Count, "A").End(xlUp).Row + 1\n \n ' 遍历当前表格的每个单元格\n For Each cell In rng1\n ' 查找 Sheet2 中是否存在相同的 id\n Set rng2 = ws2.Range("A1:A" & lastRow2).Find(cell.Value, LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=False)\n \n ' 如果找到了相同的 id,则将当前表格的数据复制到 Sheet2 的相应行\n If Not rng2 Is Nothing Then\n cell.Resize(, 3).Copy ws2.Cells(rng2.Row, "B")\n Else\n ' 如果没有找到相同的 id,则将当前表格的数据复制到 Sheet2 的下一行\n cell.Resize(, 3).Copy ws2.Cells(lastRow2, "B")\n lastRow2 = lastRow2 + 1\n End If\n Next cell\n Next rng1\n \n MsgBox "合并完毕!", vbInformation\nEnd Sub\n\n\n在 VBA 编辑器中,将代码粘贴到一个新的模块中,然后运行 MergeTables 过程即可实现将 Sheet1 中的三个表格按照 id 进行合并并输出到 Sheet2。
原文地址: https://www.cveoy.top/t/topic/p8Ch 著作权归作者所有。请勿转载和采集!