在插入行的同时,根据ID合并来自2个工作表的数据

时间:2018-04-29 12:19:54

标签: excel vba excel-vba

我有两个工作表:

  • Sheet1在列ID中有唯一的A
  • Sheet2 可能有两个或多个连续的数据行,且匹配ID

我需要匹配 ID并复制B列中的数据& C位于Sheet1的相同列中。我可以通过调整here的解决方案来做到这一点。

但是,我还希望复制(最终)第二行,第三行等行,并在ID中将Sheet2与{{1>}匹配到新行 }。

*Examples (images)*

谢谢!

2 个答案:

答案 0 :(得分:0)

考虑在两个工作表之间运行带有内部联接查询的SQL。下面假设一个名为 OUTPUT 的空白表,第一行包含标题:

' ADO OBJECTS
Dim xlConn As Object, rs As Object

Set xlConn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")

' CURRENT WORKBOOK CONNECTION
xlConn.Open "DRIVER={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};" _
              & "DBQ=" & ThisWorkbook.FullName & ";"

' JOIN QUERY
strSQL = "SELECT t1.ID, t2.[Name], t2.Age" _
           & " FROM [Sheet1$] t1" _
           & " INNER JOIN [Sheet2$] t2 ON t1.ID = t2.ID"

' OUTPUT RESULTS
rs.Open strSQL, xlConn

Worksheets("OUTPUT").Range("A2").CopyFromRecordset rs

rs.Close
xlConn.Close

答案 1 :(得分:0)

您可以通过ID查找相关信息并将其与VLOOKUP匹配。

  

= VLOOKUP(查找值,包含查找值的范围,包含返回值的范围中的列号,可选择指定   对于近似匹配为TRUE,对于完全匹配为FALSE)

您的示例作为常见的Excel公式:

=VLOOKUP("ID from Sheet1", "Range in Sheet2", "Row number of Sheet 2 you want to add", FALSE "for exact match")

这也可以作为VBA执行:

Application.WorksheetFunction.VLOOKUP("ID from Sheet1", "Range in Sheet2", "Row number of Sheet 2 you want to add", FALSE "for exact match")