Как посчитать количество цифр в столбце Excel: от простых формул до VBA

Почему подсчёт цифр в Excel — не такая простая задача, как кажется

На первый взгляд, подсчитать количество цифр в столбце Microsoft Excel — тривиальная задача. Однако многие пользователи сталкиваются с неожиданными сложностями: программа не различает числа и текстовые представления чисел, игнорирует ведущие нули, а стандартная функция ДЛСТР() работает только с текстовыми строками. Например, если в ячейке записано число 12345, то ДЛСТР(A1) вернёт 5 символов, но если это число отформатировано как текст "0012345" — результат уже будет 7.

Ещё одна ловушка — отрицательные числа и дробные значения. Скажем, для ячейки с -123,45 нужно ли учитывать знак «минус» и разделитель? А как быть с научной нотацией (1,23E+05)? Без чёткого понимания требований даже опытные пользователи получают неверные результаты. В этой статье мы разберём 5 надёжных методов, которые покрывают 90% практических сценариев — от базовых формул до автоматизации через VBA.

Метод 1: Подсчёт цифр в числовых значениях (без учёта форматирования)

Если ваш столбец содержит числа в стандартном формате (без ведущих нулей и текстовых преобразований), самый простой способ — использовать комбинацию функций ДЛСТР() и ПОДСТАВИТЬ(). Эта формула удаляет все нецифровые символы, а затем считает длину оставшейся строки:

=ДЛСТР(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ТЕКСТ(A1);"-";"");",";"");" ";"");".";""))

Разберём по шагам:

  • 🔹 ТЕКСТ(A1) — преобразует число в текстовый формат, чтобы избежать ошибок с датами или временем.
  • 🔹 ПОДСТАВИТЬ(..., "-", "") — удаляет знак «минус» (если число отрицательное).
  • 🔹 ПОДСТАВИТЬ(..., ",", "") и ПОДСТАВИТЬ(..., ".", "") — убирают разделители тысяч и десятичную точку.
  • 🔹 ДЛСТР() — считает количество оставшихся символов (только цифры).

⚠️ Внимание: Эта формула не учитывает ведущие нули в текстовых ячейках (например, "00123" вернёт 3, а не 5). Для таких случаев используйте Метод 2.

Ячейки содержат только числа (не текст)|Нет ведущих нулей|Отрицательные числа нужно учитывать без знака "минус"|Дробные значения должны считаться без точки/запятой-->

Метод 2: Учёт ведущих нулей и текстовых чисел

Когда данные хранятся как текст (например, артикулы "00012345" или телефонные номера "8(800)555-35-35"), стандартные функции Excel их «не видят». Здесь поможет формула с регулярными выражениями через ПОИСКПОЗ и ПСТР, но проще использовать Power Query или VBA. Однако для быстрого решения подойдёт такой вариант:

=СУММПРОИЗВ(--(НЕОШ(ПОИСКПОЗ({0;1;2;3;4;5;6;7;8;9};A1&"0123456789";1)))))

Как это работает:

  1. Функция ПОИСКПОЗ ищет каждую цифру от 0 до 9 в ячейке A1.
  2. Если цифра найдена, НЕОШ возвращает ИСТИНА, иначе — ошибку.
  3. --(НЕОШ(...)) преобразует результат в 1 (если цифра есть) или 0 (если нет).
  4. СУММПРОИЗВ суммирует все единицы, давая общее количество цифр.

💡 Пример: Для ячейки "Товар #007" формула вернёт 3 (цифры 0, 0, 7).

Как числа (без ведущих нулей)|Как текст (с ведущими нулями)|Смешанно (и числа, и текст)|Не знаю, как определить-->

Метод 3: Power Query для массовой обработки данных

Если вам нужно обработать тысячи строк или регулярно обновлять отчёты, ручные формулы станут тормозить производительность. В этом случае Power Query (доступен в Excel 2016+) — оптимальное решение. Алгоритм действий:

  1. Выделите столбец с данными → вкладка ДанныеИз таблицы/диапазона.
  2. В открывшемся редакторе Power Query выделите столбец → ПреобразоватьЗаменить значения.
  3. Удалите все нецифровые символы (замените на пустую строку):
    • 🔹 Заменить - на "" (минус).
    • 🔹 Заменить , и . на "" (разделители).
    • 🔹 Заменить (, ), на "" (скобки и пробелы).
  • Добавьте новый столбец: Добавление столбцаНастраиваемый столбец с формулой = Text.Length([Column1]).
  • ⚠️ Внимание: После импорта данных обратно в Excel новый столбец с количеством цифр будет статичным. Чтобы обновить результаты, кликните правой кнопкой по таблице → Обновить.

    Исходные данные Формула Excel Power Query Результат
    12345 =ДЛСТР(А1) Text.Length("12345") 5
    -123,45 =ДЛСТР(ПОДСТАВИТЬ(А1;"-";""))-1 Text.Length("12345") 5
    "007" =3 (ручной подсчёт) Text.Length("007") 3
    "ABC123" =СУММПРОИЗВ(--НЕОШ(ПОИСКПОЗ({0;1;2;3;4;5;6;7;8;9};A1))) Text.Length("123") 3

    Метод 4: VBA для сложных сценариев (включая научную нотацию)

    Если ваши данные содержат научную нотацию (например, 1,23E+05), формулы и Power Query дадут сбой. Здесь поможет макрос на VBA, который обрабатывает любые форматы:

    Function CountDigits(rng As Range) As Long
    

    Dim str As String

    Dim i As Integer, digitCount As Long

    str = CStr(rng.Value)

    digitCount = 0

    For i = 1 To Len(str)

    If Mid(str, i, 1) >= "0" And Mid(str, i, 1) <= "9" Then

    digitCount = digitCount + 1

    End If

    Next i

    CountDigits = digitCount

    End Function

    Как использовать:

    1. Нажмите Alt + F11, чтобы открыть редактор VBA.
    2. Вставьте код выше в модуль (меню Insert → Module).
    3. В Excel введите в ячейке =CountDigits(A1).

    🔹 Преимущества: Работает с любыми форматами, включая 1.23E+05 (вернёт 5 цифр: 1, 2, 3, 0, 5).

    🔹 Недостатки: Требует разрешения на выполнение макросов (Файл → Параметры → Центр управления безопасностью → Параметры центра управления безопасностью → Включить все макросы).

    Метод 5: Подсчёт уникальных цифр в столбце

    Иногда требуется не общее количество цифр, а количество уникальных цифр в каждой ячейке. Например, для номера 112233 уникальных цифр всего 3 (1, 2, 3). Решение:

    =СУММ(--(ЧАСТОТА(ПСТР(ПОДСТАВИТЬ(A1;",";"");СТРОКА(ДВССЫЛ("1:10"));1)+0;ПСТР(ПОДСТАВИТЬ(A1;",";"");СТРОКА(ДВССЫЛ("1:10"));1)+0)>0))

    Альтернатива через Power Query:

    1. Добавьте столбец с формулой = Text.ToList([Column1]) (преобразует строку в список символов).
    2. Разверните список в новые строки (Преобразовать → Развернуть в новые строки).
    3. Отфильтруйте только цифры (0-9).
    4. Сгруппируйте по исходному значению и посчитайте уникальные цифры (Группировка → Количество уникальных значений).
    5. ⚠️ Внимание: Формула массива требует ввода через Ctrl + Shift + Enter в старых версиях Excel (до 2019). В Excel 365 она работает как обычная формула.

      Почему ЧАСТОТА не работает с текстовыми числами?

      Функция ЧАСТОТА ожидает числовые массивы, а текстовые символы (например, "0") она воспринимает как 0. Поэтому перед использованием ЧАСТОТА нужно преобразовать каждый символ в число с помощью +0 или ЗНАЧЕН.

      Типичные ошибки и как их избежать

      Даже опытные пользователи допускают ошибки при подсчёте цифр. Вот самые распространённые:

      • 🚫 Игнорирование формата ячеек: Число 123 и текст "123" обрабатываются по-разному. Всегда проверяйте формат через Формат ячеек (Ctrl + 1).
      • 🚫 Пустые ячейки: Формулы могут возвращать ошибку на пустых ячейках. Используйте ЕСЛИ(A1="";0;формула) для защиты.
      • 🚫 Локальные настройки: В русских версиях Excel разделителем дробной части служит запятая (,), а в английских — точка (.). Учитывайте это в формулах.
      • 🚫 Скрытые символы: Непечатаемые символы (например, CHAR(160) — неразрывный пробел) могут искажать результат. Используйте ПЕЧСИМВ(A1) для их удаления.

      📌 Проверенный лайфхак: Чтобы увидеть все скрытые символы, включите Главная → Редактирование → Заменить и в поле Найти введите ~ (тильда). Это отобразит все непечатаемые знаки.

      FAQ: Ответы на частые вопросы

      Можно ли посчитать цифры в диапазоне, а не в отдельной ячейке?

      Да, используйте функцию СУММПРОИЗВ с массивом. Например, для диапазона A1:A10:

      =СУММПРОИЗВ(ДЛСТР(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A1:A10;"-";"");",";"");".";"")))

      В Excel 365 можно использовать СУММ(КАРТА(A1:A10;ЛЯМБДА(x;ДЛСТР(ПОДСТАВИТЬ(ПОДСТАВИТЬ(x;"-";"");",";""))))).

      Как посчитать цифры в датах (например, "01.01.2023")?

      Даты в Excel хранятся как числа (количество дней с 1900 года). Чтобы посчитать цифры в текстовом представлении даты, используйте:

      =ДЛСТР(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ТЕКСТ(A1;"дд.мм.гггг");".";"");" ";""))

      Для даты 01.01.2023 результат будет 8 (цифры: 0,1,0,1,2,0,2,3).

      Почему моя формула возвращает #ЗНАЧ!?

      Ошибка #ЗНАЧ! возникает, если:

      • Ячейка содержит ошибку (например, #ДЕЛ/0!).
      • Формула массива введена без Ctrl+Shift+Enter (в Excel до 2019).
      • Используются несовместимые типы данных (например, текст вместо числа в ЧАСТОТА).

    Решение: проверьте исходные данные на ошибки и используйте ЕСЛИОШИБКА для обработки.

    Как посчитать цифры в ячейке, игнорируя буквы и символы?

    Используйте формулу из Метода 2 или этот упрощённый вариант:

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

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

    Можно ли автоматизировать подсчёт цифр при изменении данных?

    Да, есть три способа:

    1. Формулы: Обновляются автоматически при изменении исходных данных.
    2. Power Query: Требует ручного обновления (клик правой кнопкой по таблице → Обновить).
    3. VBA: Можно добавить обработчик события Worksheet_Change, чтобы макрос срабатывал при редактировании ячеек.