Найти номер вхождения слова в ячейку - PullRequest
0 голосов
/ 27 марта 2019

Я пытаюсь найти номер вхождения данного слова в ячейку строки.Какая может быть возможная формула, используемая для расчета вхождения?

Ответы [ 3 ]

1 голос
/ 28 марта 2019

Если вы не можете получить ответ с помощью стандартной формулы, попробуйте этот UDF.Перетащите его в новый модуль в редакторе VBA.Google " как мне создать новый модуль в Excel VBA ", если вы не уверены, как это сделать.

Public Function CountSpecificWord(ByVal strText As String, ByVal strWord As String, Optional ByVal bIgnoreCase As Boolean = False) As Long
    Application.Volatile

    Dim i As Long, strThisWord As String, arrWords() As String

    arrWords = Split(strText, " ")

    If bIgnoreCase Then strWord = UCase(strWord)

    For i = 0 To UBound(arrWords)
        strThisWord = arrWords(i)
        If bIgnoreCase Then strThisWord = UCase(strThisWord)
        If strWord = strThisWord Then CountSpecificWord = CountSpecificWord + 1
    Next
End Function

Есть 2 параметра ...

  • strText - текст, который вы хотите найти внутри.
  • strWord - текст, который вы хотите найти.
  • bIgnoreCase - Хотите, чтобы поиск был чувствительным к регистру?Это необязательно, по умолчанию используется значение false.

Затем вы можете использовать его в ячейке ...

Usage

Iнадеюсь, что это поможет.

1 голос
/ 27 марта 2019

Допустим, у A1 есть fun fun no fun, и вы хотите знать, сколько раз "забавных" происходит, вы можете использовать эту формулу:

=(LEN(A1)-LEN(SUBSTITUTE(A1,"fun","")))/LEN("fun")

Редактировать: обратите внимание, что это может быть не идеально,так как он вернет 3 для fun funky fun no вместо 2.Вы можете обойти это, добавив пробелы вокруг слова, которое вы ищете ... затем проверьте первое слово в ячейке, чтобы увидеть, соответствует ли оно тому, что вы хотите.... так что я бы сказал, что это ограниченный вариант использования.

0 голосов
/ 28 марта 2019

Если вам нужно сосчитать только целые слова, это немного громоздко, но сработает:

=SUMPRODUCT(--(TRIM(MID(SUBSTITUTE(TRIM(A1)," ",REPT(" ",LEN(A1))),LEN(A1)*(ROW(A$1:INDEX($A:$A,LEN(TRIM(A1))-LEN(SUBSTITUTE(TRIM(A1)," ",""))+1))-1)+1,LEN(A1)))="fun"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...