This should do
Sub test()
Dim ws As Worksheet, a, i As Long, ii As Long, dic As Object
Set dic = CreateObject("Scripting.Dictionary")
For Each ws In Worksheets
If ws.Name Like "Sheet*" Then
a = ws.[a1].CurrentRegion.Value
For i = 2 To UBound(a, 1)
If a(i, 2) <> "" Then
If Not dic.exists(a(i, 2)) Then
Set dic(a(i, 2)) = CreateObject("Scripting.Dictionary")
dic(a(i, 2)).CompareMode = 1
End If
For ii = 3 To UBound(a, 2)
dic(a(i, 2))(a(1, ii)) = a(i, ii)
Next
End If
Next
End If
Next
With Sheets("Combined cancellations").[a1].CurrentRegion
.Offset(1, 1).ClearContents
a = .Resize(dic.Count + 1)
For i = 0 To dic.Count - 1
a(i + 2, 2) = dic.keys()(i)
For ii = 3 To UBound(a, 2)
a(i + 2, ii) = dic.items()(i)(a(1, ii))
Next
Next
.Resize(dic.Count + 1).Value = a
End With
End Sub
Bookmarks