Количество слов в ячейке

Задача

Предположим, что в ячейке А1 у нас есть какой-то текст, а в ячейке B1 нам нужно подсчитать количество слов в этом тексте.

Решение

Простым, но красивым решением для подсчета количества слов в ячейке, будет следующая формула для B1:

=ЕСЛИ(ЕПУСТО(A1);0;ДЛСТР(СЖПРОБЕЛЫ(A1))-ДЛСТР(ПОДСТАВИТЬ(A1;" ";""))+1)

=IF(ISBLANK(A1);0;LEN(TRIM(A1))-LEN(SUBSTITUTE(A1;" ";""))+1)

Разбор полетов

Общий принцип работы формулы прост - число слов в ячейке всегда на 1 больше, чем число пробелов между словами. Таким образом, подсчитав разницу между длиной исходного текста и его же, но взятого без пробелов - мы получим в результате количество пробелов, т.е. количество слов. На случай, если где-то в тексте "для красоты" стоят по два-три пробела между словами или понатыканы пробелы перед или после текста - мы используем функцию СЖПРОБЕЛЫ (TRIM) из категории Текстовые, которая удаляет все лишние пробелы из исходного текста, кроме одиночных пробелов между словами. Таким образом в нашей формуле:

  • ДЛСТР(СЖПРОБЕЛЫ(A1)) - длина исходного текста без лишних пробелов
  • ДЛСТР(ПОДСТАВИТЬ(A1;" ";"")) - длина исходного текста, в котором все пробелы заменены на пустоту, т.е. удалены, т.е. длина текста без пробелов вообще

Ну, а дальше считаем разницу и прибавляем 1, чтобы получить искомое количество слов.

Остается одна маленькая проблема: если ячейка пустая, то наша формула выдает 1. Поэтому добавим функцию ЕСЛИ (IF), которая будет заранее проверять ячейку на предмет пустоты с помощью функции ЕПУСТО (ISBLANK) и выводить 0 либо считать число слов по нашему алгоритму.

Вот и все. Просто и изящно :)

Ссылки по теме

 


SLADE
24.10.2012 23:30:13
Действительно красивое решение.
Намотал на ус.
ZagZag
24.10.2012 23:30:38
Гениально! Когда-то для подсчета слов я писал макрос, а оказалось так просто.
Михаил
24.10.2012 23:31:49
от ЕСЛИ можно избавиться:
=ДЛСТР(СЖПРОБЕЛЫ(A1))-ДЛСТР(ПОДСТАВИТЬ(A1;" ";)+ЕТЕКСТ(A1)
Не задан ID пользователя.

16.04.2015 17:24:24
А можно при помощи формул EXCEL посчитать количество символов в ячейке. нашел макрос но интересно есть способ подобный подсчету слов?
Не задан ID пользователя.

23.08.2016 17:27:11
=ДЛСТР(ПОДСТАВИТЬ(RC[-1];" ";))