Sanja, спасибо за уточнение правил, буду иметь в виду!
evgeniygeo, спасибо, тоже интересный вариант, попробую его тоже, может, тогда быстрее работать будет
Прикрепляю свою заработавшую версию кода, вдруг кому пригодится)
| Код |
|---|
Sub Найтисовпадения()
Dim lastRowA As Long
Dim lastRowF As Long
Dim i As Long
Dim j As Long
Dim result As String
Dim col As New Collection
lastRowA = Sheets("Лист1").Cells(Rows.Count, "C").End(xlUp).Row
lastRowF = Sheets("Лист2").Cells(Rows.Count, "A").End(xlUp).Row
For i = 1 To lastRowF
result = ""
For j = 1 To lastRowA
If Sheets("Лист2").Cells(i, "A").Value = Sheets("Лист1").Cells(j, "E").Value Then
If result = "" Then
result = Sheets("Лист1").Cells(j, "C").Value
Else
result = result & "; " & Sheets("Лист1").Cells(j, "C").Value
End If
End If
Next j
Sheets("Лист2").Cells(i, "C").Value = result
Next i
On Error Resume Next
For Each cell In Selection
Set col = Nothing
sResult = ""
arWords = Split(WorksheetFunction.Trim(cell.Value), "; ")
For i = LBound(arWords) To UBound(arWords)
Err.Clear
col.Add arWords(i), arWords(i)
If Err.Number = 0 Then sResult = sResult & " " & arWords(i)
Next i
cell.Value = Trim(sResult)
Next cell
End Sub
|