我有两个工作表:
Sheet1
在列ID
中有唯一的A
。Sheet2
可能有两个或多个连续的数据行,且匹配ID
。我需要匹配 ID
并复制B
列中的数据& C
位于Sheet1
的相同列中。我可以通过调整here的解决方案来做到这一点。
但是,我还希望复制(最终)第二行,第三行等行,并在ID
中将Sheet2
与{{1>}匹配到新行 }。
谢谢!的
答案 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")