链接来自不同工作表的数据字段

我有报告说,我经常从两个不同的来源运行,这两个来源都有一个唯一的标识符,用于链接两个报告中的数据(我将调用字段ID“LINK ID”)。 该字段出现在两组输出中(但是输出来自2个填充不同数据点的不同系统)。 我通常将每个报告剪切并粘贴到新创build的工作簿中的单独工作表中,然后进行匹配。

有一次,我曾经在一个子例程中循环遍历包含“LINK ID”的列,然后在另一个工作表上包含相同的“LINK ID”的另一列循环,如果发现一个匹配它会复制链接到匹配的整个数据行并粘贴到第一个工作表上。

我所做的代码从来没有完全完成,但是我想看看能否一劳永逸地找出这个问题,因为如果我不必一次一个一个浏览这些代码,那真是太棒了。 。

这是我有什么:

Private Sub Find_And_Link() Dim rw As Long Dim mr2 As Long Dim ws3 As Worksheet Set ws3 = Sheets("VM") With Sheets("AY") For rw = 2 To .Cells(Rows.Count, "F").End(xlUp).Row If CBool(Application.CountIf(ws3.Columns(1), .Cells(rw, "F").Value)) Then mrw = Application.Match(.Cells(rw, "F"), ws3.Columns(1), 0) ws3.Cells(mrw, "A").Resize(1, 12).Copy _ Destination:=.Cells(rw, "G") ws3.Rows(mrw).EntireRow.Delete 'getting rid of the row if match found End If Next rw End With Set ws3 = Nothing End Sub 

这是我所能得到的。 我假定你的工作表“AY”是你希望数据复制的原始工作表,而“VM”是你正在search要复制的数据工作表(如果是反向的,则改变它)。 我也改变了variables名更清晰一些:

 Sub Find_And_Link() Dim i As Long, copyRow As Long Dim origWS As Worksheet, copyWS As Worksheet Set copyWS = Sheets("VM") Set origWS = Sheets("AY") With origWS For i = 2 To .Cells(.Rows.Count, "F").End(xlUp).Row If CBool(Application.CountIf(copyWS.Columns(1), .Cells(i, "F").Value)) Then copyRow = Application.Match(.Cells(i, "F"), copyWS.Columns(1), 0) Debug.Print "Match found in row " & copyRow & "." copyWS.Cells(copyRow, "A").Resize(1, 12).Copy Destination:=.Cells(i, "G") copyWS.Rows(copyRow).EntireRow.Delete 'getting rid of the row if match found Else Debug.Print "No match found for Link ID " & .Cells(i, 6) & " :(" End If Next i End With Set copyWS = Nothing End Sub 

我试过这个,它的工作。 注意:在“AY”中,您的“链接ID”全部在栏F中。在“VM”中,“链接ID”全部在A栏中。

这将在“VM”中find一个匹配项,将列A中的数据复制到L,然后将其粘贴到“AY”列G到S中。请注意,这不是你所问的(你要求replace整个行原始工作表),但是我这样做是因为它在你的代码中。

要replace原始“AY”表单中的整行,请将复制目标更改为Destination:=.Cells(i,"A") 。 (您可能需要添加.Rows(i).Clear该行之前清除该行中的任何数据。)