Возможности !SEMTools

Подсчет количества символов в ячейках Excel бывает очень полезен — вопрос лишь в том, какой конкретно алгоритм использовать. А это в свою очередь зависит от ситуации и условий поставленной задачи.

Когда нужен подсчет символов в ячейках

Наиболее часто количество всех или определенных символов в ячейке нужно знать, когда есть какие-либо ограничения:

  • количество символов в каждой ячейке не должно превышать определенное значение
  • нет ограничений по длине на одну ячейку, но есть лимит на суммарное количество символов в нескольких
  • когда есть ограничение по количеству символов снизу, иначе говоря, минимальная длина
  • есть ограничение по количеству введенных в ячейку определенных символов (например, не более одного знака «!»)

Ниже я рассмотрю более детально каждый из случаев.

Количество символов в ячейке — формула

ДЛСТР — замечательная функция, и с её помощью можно решить уйму задач, связанных с подсчетом символов в ячейках. Вот простейший пример ее применения.

=ДЛСТР(A1)
формула количества символов в ячейке
Результат работы формулы

Посчитать количество определённых символов в ячейке

Чтобы посчитать количество определённых символов в ячейке, есть старый как мир лайфхак — достаточно посчитать длину ячейки целиком функцией ДЛСТР, а затем вычесть из неё длину той же ячейки, в которой удалёны эти самые символы. Для удаления используется функция ПОДСТАВИТЬ, третьим аргументом которой делают строковую пустоту, обозначаемую двойными кавычками, между которыми ничего нет.

Например, вот формула для подсчёта количества букв «у» в ячейке A1.

=ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;»у»;»»))

Пример - ДЛСТР для подсчета встречаемости буквы в ячейке
Подсчет встречаемости буквы «у» в ячейке

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

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

Подробное руководство в моей исчерпывающей статье «Посчитать цифры в ячейках и ячейки с цифрами«. А я приведу лишь формулу массива оттуда:

=СУММ(ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;{1;2;3;4;5;6;7;8;9;0};"")))

Есть и другой вариант — с помощью функции СЧЁТ:

=СЧЁТ(ПСТР(A1;СТРОКА(ДВССЫЛ("1:"&ДЛСТР(A1)));1)+1)

Количество английских букв в ячейке

Английские буквы можно перечислить в массиве явно, как и цифры. Но, поскольку функция ПОДСТАВИТЬ регистрозависимая, чтобы не перечислять все 26*2=52 варианта английских букв, можно добавить в формулу функцию ПРОПИСН.

=СУММ(ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(ПРОПИСН(A1);{A;B;C;D;E;F;G;H;I;J;K;L;M;N;O;P;Q;R;S;T;U;V;W;X;Y;Z};"")))

Можно не перечислять английские буквы явно, обратившись к соответствующему им диапазону ANSI через функции СИМВОЛ и СТРОКА:

=СУММ(ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(ПРОПИСН(A1);СИМВОЛ(СТРОКА(A65:A90));"")))

У второй формулы есть один недостаток. Если в таблице удалить строки, в диапазоне 1-90, то диапазон, на который она ссылается, «поедет» и формула испортится. Это можно исправить, еще сильнее усложнив формулу функцией ДВССЫЛ и задав диапазон как строковое значение.

Количество русских букв в ячейке

Проблема с русскими буквами (также известными как кириллица) в том, что буква ё, как строчная, так и заглавная, находится за пределами сплошного диапазона в таблицах ANSI и UNICODE, поэтому нужно либо перечислять русские буквы явно:

=СУММ(ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(ПРОПИСН(A1);{А;Б;В;Г;Д;Е;Ё;Ж;З;И;Й;К;Л;М;Н;О;П;Р;С;Т;У;Ф;Х;Ц;Ч;Ш;Щ;Ъ;Ы;Ь;Э;Ю;Я};"")))

либо подсчет этой буквы вести отдельно и суммировать с результатом для диапазона из 32 остальных букв. Формула вводится сочетанием Ctrl+Shift+Enter

=СУММ(ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(ПРОПИСН(A1);СИМВОЛ(СТРОКА(A192:A233));"")))+ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(ПРОПИСН(A1);"Ё";""))

У этой формулы есть уже два недостатка:

  1. Первый аналогичен такому же для подсчета английских символов.
  2. Второй в том, что она не очень надежна. Она полагается на таблицу ANSI, наполнение которой в свою очередь зависит от того, какой язык у вас в настройках системы.

Поэтому рекомендуется либо явное перечисление букв, либо использование вместо СИМВОЛ функции ЮНИСИМВ, где для символов кириллицы «железно» застолбили диапазон 1040-1071:

=СУММ(ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(ПРОПИСН(A1);ЮНИСИМВ(СТРОКА(A1040:A1071));"")))+ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(ПРОПИСН(A1);"Ё";""))

Я все же за явное перечисление букв :)

Количество любых букв в ячейке

Здесь задача еще сложнее, ведь все буквы и не перечислишь — помимо латиницы и кириллицы есть масса диакритических символов, которые тоже нужно учитывать. Но благодаря их замечательному свойству менять регистр, их можно вычислить с помощью вот такой мудрёной комбинации функций в формуле массива:

=СУММ(НЕ(СОВПАД(ПРОПИСН(ПСТР(A1;СТРОКА(ДВССЫЛ("1:"&ДЛСТР(A1)));1));СТРОЧН(ПСТР(A1;СТРОКА(ДВССЫЛ("1:"&ДЛСТР(A1)));1))))+0)

Формула вводится сочетанием клавиш Ctrl+Shift+Enter и считает количество букв (способных менять регистр) в ячейке A1.

Процедура подсчета символов в ячейках

Поскольку ввод формул — занятие муторное, я разработал для задачи подсчёта символов несложную процедуру в !SEMTools. Прелесть процедуры в том, что она считает все моментально в пару кликов и выводит результат в столбец справа (если активна опция вывода в соседний столбец).

Можно выделять целиком весь столбец, надстройка сама определит конец рабочего диапазона:

Подсчет количества символов в нескольких ячейках процедурой !SEMTools

Посчитать количество символов в нескольких ячейках одновременно

Если нет задачи считать длину содержимого каждой из ячеек, а нужна сразу сумма длин, можно использовать ту же функцию ДЛСТР, но в несколько ином виде — в виде формулы массива:

Формула подсчета суммарной длины содержимого нескольких ячеек в символах

Текст формулы:

=СУММ(ДЛСТР(A2:A6))

Важно понимать, что формула вернет корректный результат, только если обретет фигурные скобки после ввода ее в ячейку сочетанием клавиш Ctrl + Shift + Enter.

Понравилась статья? Поддержите ее автора!
Набор инструментов !SEMTools поможет решить множество задач без ввода сложных формул и сэкономит ваше время. И вам полезно, и автору приятно!

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

*