2

Как подсчитать количество вхождений подстроки в ячейке?

Например:

|   |         A         |
| 1 |John,John,Tom,David|

Какую формулу я бы использовал, если я хочу вернуть количество вхождений "Джона" в ячейку A1 (= 2)?

5 ответов5

4

Ничего себе, после поисков в течение месяца по этой проблеме, я наткнулся на ответ после публикации этого вопроса. Вот что я придумал на случай, если у кого-то еще возникнет эта проблема.

=SUM(IF(ISNUMBER(FIND("John"; SPLIT(A1; ",")));1;0))

Это формула массива, поэтому ее необходимо вводить с помощью Ctrl+Shift+Enter.

Если кто-нибудь думает о лучшем способе решения этой проблемы, пожалуйста, дайте мне знать!

2

Я думаю, что вы, вероятно, нашли лучший способ.

Альтернатива:

=(LEN(A1)-LEN(SUBSTITUTE(A1,"John",)))/LEN("John")
2

Вот подход, который работает в электронных таблицах Google:

=COUNTIF(SPLIT(A1,","),"John")
1

Только для Google Sheets

Я придумал следующий альтернативный способ:

=LEN(REGEXREPLACE(SUBSTITUTE(SUBSTITUTE(A1;"@";"");"John";"@");"[^@]";""))

Объяснение:

  • Мы выбираем специальный символ (это может быть любой символ, отсутствующий в целевой подстроке) и удаляем его из строки
  • Мы заменяем искомую подстроку этим символом
  • Мы заменяем любой символ, который не является нашим специальным персонажем, ничем
  • Мы считаем длину полученной строки, и это число вхождений подстроки.
0

У меня нет репутации комментировать в вышеупомянутой теме, но я смог расширить ответ JohnL, чтобы он работал на нескольких ячейках:

=ArrayFormula(SUM(IF(ISNUMBER(find ("search text", split(Concatenate(A1:A3), ","))),1,0)))

где A1:A3 - это ячейки, а "текст для поиска" - это текст для поиска.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .