Hi Karl,
Here's a quicker version for your big file:
Sub KarlQ(): Dim w1 As Worksheet, w2 As Worksheet, r As Long
Dim UID As String, LC1 As Long, LC2 As Long, Q1, Q2, n As Long
Set w1 = Sheets("Sheet1"): Set w2 = Sheets("Sheet2")
LC2 = w2.Cells(1, Columns.count).End(xlToLeft).column
LC1 = w1.Cells(1, 1).End(xlToRight).column
Q2 = w2.UsedRange: w1.UsedRange.Offset(0, LC1).ClearContents
Q1 = w1.UsedRange.Resize(, LC1 + 1 + LC2)
With CreateObject("Scripting.Dictionary")
For r = 1 To UBound(Q2, 1)
UID = Q2(r, 1): .Item(UID) = r: Next r
For r = 1 To UBound(Q1, 1): UID = Q1(r, 1)
If .Exists(UID) Then
For n = 1 To LC2: Q1(r, LC1 + n + 1) = Q2(.Item(UID), n): Next n
End If
Next r
End With: w1.UsedRange.Resize(, LC1 + 1 + LC2) = Q1
End Sub
Bookmarks