Все перерыл, но не нашёл нужной формулы. Нужно в тексте найти слова из колонки B и записать одинаковые слова, также через запятую в колонку С их может быть несколько. Размер таблицы большой, текста более 50к, а слов для поиска более 5к. Заранее спасибо!
Интересное решение, но не совсем подходит, бывает несколько совпадений и их нужно записать через запятую. В примере кусок таблицы, на самом деле слов для поиска более 5к.
формула захлебнётся - ищите макрос, несколько раз уже обсуждалось
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Dim i As Integer
Dim j As Integer
Dim str As String
For i = 2 To 23
str = ""
For j = 2 To 16
If InStr(1, Cells(i, 1), Cells(j, 2)) > 0 Then str = str & Cells(j, 2) & ", "
Next j
Cells(i, 3) = str
Next i
Sub ТекстСлова()
Dim sh As Worksheet
Set sh = ActiveSheet
With sh
Dim arr As Variant
Dim y As Long
Dim u As Long
Dim m As Long
y = .Cells(.Rows.Count, 1).End(xlUp).Row
m = .Cells(.Rows.Count, 2).End(xlUp).Row
arr = .Range(.Cells(1, 1), .Cells(Application.Max(y, m), 3))
Dim ou As Variant
For y = 2 To UBound(arr, 1)
For u = 2 To m
If InStr(arr(y, 1), arr(u, 2)) > 0 Then
If Not IsEmpty(ou) Then
ReDim Preserve ou(0 To UBound(ou) + 1)
Else
ReDim ou(0 To 0)
End If
ou(UBound(ou)) = arr(u, 2)
End If
Next
If IsArray(ou) Then
arr(y, 3) = Join(ou, ", ")
Erase ou
ou = Empty
Else
arr(y, 3) = Empty
End If
Next
.Cells(1, 1).Resize(UBound(arr, 1), UBound(arr, 2)) = arr
End With
End Sub