Вот еще одна версия, которая использует объект Dictionary для оценки совпадений.
Она также использует массивы для ускорения обработки - полезно с большими наборами данных.
Обязательно установите ссылкукак отмечено в комментариях к коду, но если вы собираетесь распространять этот код, вы можете предпочесть использовать позднюю привязку.
Одно из предположений состоит в том, что все ваши значения являются числовыми.Если некоторые из них содержат текст, вы можете (или не можете) изменить режим сравнения словаря на Текст.
Option Explicit
'Set reference to Microsoft Scripting Runtime
Sub MatchUp()
Dim WS As Worksheet, R As Range
Dim V, W, X, Y, Z
Dim D As Dictionary
Dim I As Long
Set WS = Worksheets("sheet1") 'Change to your desired worksheet
With WS
'Change `A` to `X` for your stated setup
Set R = .Range(.Cells(1, "A"), .Cells(.Rows.Count, 1).End(xlUp)).Resize(columnsize:=3)
'Read range into variant array
V = R
End With
For I = 2 To UBound(V, 1)
W = Split(V(I, 1), ",")
X = Split(V(I, 2), ",")
V(I, 3) = ""
'Test and populate third column (in array) if there are matches
'Will also eliminate any duplicate codes within the data columns
Set D = New Dictionary
For Each Y In W
Y = Trim(Y) 'could be omitted if no leading/trailing spaces
If Not D.Exists(Y) Then D.Add Y, Y
Next Y
For Each Z In X
Z = Trim(Z)
If D.Exists(Z) Then V(I, 3) = V(I, 3) & ", " & Z
Next Z
V(I, 3) = Mid(V(I, 3), 3)
Next I
R.EntireColumn.Clear
R.EntireColumn.NumberFormat = "@"
R.Value = V 'write the results back to the worksheet, including column 3
R.EntireColumn.AutoFit
End Sub