Подсчет вхождений подстроки в ячейке

6913
johnL

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

Например:

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

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

2

5 ответов на вопрос

4
johnL

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

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

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

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

Как это сделать для нескольких клеток? так что если у вас будет несколько ячеек, как A1? Michael Trouw 9 лет назад 0
Функция SPLIT работает вне VBA? fixer1234 9 лет назад 0
В Excel 2013 не работает сообщение о том, что «эта функция (то есть` SPLIT`) недействительна ". И параметры в функциях должны быть разделены символами `,` not `;`. Kenneth L 5 лет назад 0
2
variant

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

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

=(LEN(A1)-LEN(SUBSTITUTE(A1,"John",)))/LEN("John") 
Это интересный подход с использованием LEN. Будем учитывать эту стратегию при рассмотрении других проблем. Спасибо! johnL 13 лет назад 0
Это ответ, который я должен был использовать для таблиц Google. Andrew Downes 9 лет назад 0
2
erwaman

Here's an approach that works in Google spreadsheets:

=COUNTIF(SPLIT(A1,","),"John") 
Это специфично для определенных версий Excel? Я не знал, что SPLIT работает за пределами VBA. fixer1234 9 лет назад 1
@ fixer1234: Я думаю, что это работает только в электронных таблицах Google. Я уточнил ответ. erwaman 9 лет назад 0
У меня не работает в Google Spreadsheet. Единственный, кого я нашел для работы с Google Spreadsheet с этой страницы, - это ответ @ option. Andrew Downes 9 лет назад 0
У меня работает: https://docs.google.com/spreadsheets/d/1xSankYnnJpPNS58orPiD6SoYaGLiEC2eHViRB-Bfahc/edit?usp=sharing erwaman 9 лет назад 0
1
Gneuh

Только для Google Sheets

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

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

Объяснение:

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

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

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

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

Похожие вопросы