Подсчитайте, сколько подстрок содержится в суперструне - PullRequest
0 голосов
/ 27 апреля 2020

Подсчет количества суперструн в пределах диапазона, содержащего подстроку, прост в LibreOffice Cal c и Excel. Как посчитать, сколько раз суперструна содержит подстроки в пределах диапазона? В приведенном ниже примере значение Animal содержится в наборе: COUNTIF ($ A $ 2: $ A $ 5, "" & B2 & "") для собаки, COUNTIF ($ A $ 2: $ A $ 5, "" & B3 & "") для Cat и так далее. Как мне подсчитать, сколько животных из диапазона B: B содержится в «Cat Dog Mouse Snake»? Ответы в столбце D должны быть 3, 1, 1, 1.

enter image description here

Ответы [ 4 ]

0 голосов
/ 28 апреля 2020

Для LO Cal c:

=SUMPRODUCT(ISNUMBER(SEARCH(B$2:B$5;A2)))

3,1,1,1

0 голосов
/ 27 апреля 2020

Сначала поместите этот UDF в стандартный модуль:

Public Function KeyKount(s As String, keywds As Range) As Long
    Dim temp As String, cell As Range

    KeyKount = 0
    temp = " " & s & " "
    For Each cell In keywds
        v = " " & cell.Text & " "
        If InStr(temp, v) > 0 Then KeyKount = KeyKount + 1
    Next cell
End Function

Затем в ячейку введите, например:

=keykount(A2,B2:B10)

enter image description here

0 голосов
/ 27 апреля 2020

Либо:

=SUMPRODUCT(--(ISNUMBER(MATCH(FILTERXML("<a><b>"&SUBSTITUTE(A2," ","</b><b>")&"</b></a>","//b"),B:B,0))))

, либо

=SUMPRODUCT(--ISNUMBER(SEARCH(" "&$B$2:$B$5&" "," "&A2&" ")))

Снова оба работают в Excel, не уверен насчет librecal c. Первый будет меньше взаимодействовать, если строка содержит меньше слов, чем список поиска, а вторая противоположна

enter image description here

0 голосов
/ 27 апреля 2020

Поместите следующую формулу в D2. Это формула массива, поэтому вам нужно будет использовать Control + Shift + Ввод вместо просто Ввод . Вы будете знать, что сделали все правильно, когда {} появится вокруг формулы в строке формул. Обратите внимание, что их нельзя добавить вручную.

=SUM(--NOT(ISERR(SEARCH($B$2:$B$5,A2))))

Скопируйте ячейку и вставьте в D3: D5.

...