В столбце А размещены фразы. В столбце B нужно (прошу не относить данное слово на свой счет) вывести уникальные слова из фраз, размещенных в столбце A. В столбце C выводится количество вхождений слов из столбца B во фразах из столбца A.
AB1, пожалуйста. А в одной ячейке слова могут повторяться? Например так "автомобили красные автомобили". И какое максимальное количество слов в ячейке?
Bema, если для реализации функционала с максимальным количеством слов в ячейке=10 требуется много времени, с благодарностью приму пример с меньшим количеством слов
В столбце B нужно (прошу не относить данное слово на свой счет) вывести уникальные слова из фраз, размещенных в столбце A.
Код
Sub iWords()
Dim i As Long
Dim iLastRow As Long
Dim n As Integer
Dim j As Integer
Dim MyArr
iLastRow = Cells(Rows.Count, "A").End(xlUp).Row
With CreateObject("scripting.dictionary"): .comparemode = 1
n = 2
For i = 2 To iLastRow
MyArr = Split(Cells(i, "A"), " ")
For j = 0 To UBound(MyArr)
If Not .exists(MyArr(j)) Then 'если нет слова, то добавляем его в словарь и в столбец B
.Add MyArr(j), 1
Cells(n, "B") = MyArr(j)
n = n + 1
End If
Next
Next
End With
iLastRow = Cells(Rows.Count, "B").End(xlUp).Row
Range("B1:B" & iLastRow).Sort Key1:=Range("B1"), Order1:=xlAscending, Header:=xlYes
End Sub
AB1, такое бывает при вставке напрямую с форума в ВБА. Попробуйте скопипастить в блокнот, а оттель скопипастить в ВБА. Если не получится, то наберите проблемные строки вручную.
Формула массива (ФМ) вводится Ctrl+Shift+Enter Memento mori
Не сразу заметил, что данный вариант считает любые вхождения слова в ячейке, а нужно, чтобы при подсчете не учитывались вхождения одного слова в другие.
количество вхождений (обычная) =СУММПРОИЗВ(ЕСЛИ(ЕЧИСЛО(НАЙТИ(ПРОПНАЧ($C2)&" ";ПРОПНАЧ($A$2:$A$6)&" "));$B$2:$B$6)) длина фраз с вхожениями (массивная): =СУММ(ЕСЛИ(ЕЧИСЛО(НАЙТИ(ПРОПНАЧ($C2)&" ";ПРОПНАЧ($A$2:$A$6)&" "));$B$2:$B$6))
сорри, опечатался. первая формула такая (обычная): =СУММПРОИЗВ(--ЕЧИСЛО(НАЙТИ(ПРОПНАЧ($C2)&" ";ПРОПНАЧ($A$2:$A$6)&" "))) вторая (обычная): =СУММПРОИЗВ(--ЕЧИСЛО(НАЙТИ(ПРОПНАЧ($C2)&" ";ПРОПНАЧ($A$2:$A$6)&" "));$B$2:$B$6)