Если вам нужно сложить не значения в ячейках, а именно цифры внутри числа (например, для числа 1234 получить 10 как 1+2+3+4), стандартная функция СУММ() не подойдёт. В Excel нет встроенной команды для такой операции, но задачу можно решить минимум пятью способами: от элементарных формул с разбором числа по символам до автоматизации через VBA. Далее разберём каждый метод с примерами, нюансами и типичными ошибками.
Важно отличать эту задачу от суммирования значений ячеек (где работает СУММ) или подсчёта количества цифр (для этого есть ДЛСТР + замена нецифровых символов). Здесь речь именно о сложении цифр внутри одного числа, текстовой строки или диапазона. Например, для ячейки с текстом "А1Б2В3" сумма цифр составит 6, а для даты 15.07.2026 — 19 (1+5+0+7+2+0+2+4).
1. Базовый метод: формула с разбором числа по разрядам
Самый надёжный способ для чисел без текста — разложить число на разряды с помощью функций ЦЕЛОЕ(), ОСТАТ() и СТЕПЕНЬ(). Подходит для чисел до 15 знаков (ограничение Excel). Формула для ячейки A1:
=ОСТАТ(A1;10) + ОСТАТ(ЦЕЛОЕ(A1/10);10) + ОСТАТ(ЦЕЛОЕ(A1/100);10) + ОСТАТ(ЦЕЛОЕ(A1/1000);10) + ...
Минус метода — нужно вручную добавлять слагаемые для каждого разряда. Для 5-значного числа формула будет такой:
=ОСТАТ(A1;10) + ОСТАТ(ЦЕЛОЕ(A1/10);10) + ОСТАТ(ЦЕЛОЕ(A1/100);10) + ОСТАТ(ЦЕЛОЕ(A1/1000);10) + ОСТАТ(ЦЕЛОЕ(A1/10000);10)
- ✅ Работает для чисел с десятичными разрядами (игнорирует дробную часть).
- ✅ Не требует дополнительных столбцов.
- ❌ Трудоёмко для чисел с большим количеством знаков.
- ❌ Не подходит для текста с цифрами (например,
"Абв123").
⚠️ Внимание: Если в ячейке текст (например,"123г"), формула вернёт ошибку#ЗНАЧ!. Для смешанных данных используйте методы из раздела 3.
2. Универсальный способ: функция ПОИСК + ПСТР
Для подсчёта цифр в любом формате (числа, текст, даты) подходит комбинация функций ПОИСК(), ПСТР() и КОДСИМВ(). Логика: проходим по каждому символу строки, проверяем, является ли он цифрой (коды символов цифр от 48 до 57), и суммируем.
Формула для ячейки A1 (массивная, вводится через Ctrl+Shift+Enter в старых версиях Excel):
=СУММ(
--(КОДСИМВ(ПСТР(A1;СТРОКА(ДВССЫЛ("1:"&ДЛСТР(A1)));1))>=48);
--(КОДСИМВ(ПСТР(A1;СТРОКА(ДВССЫЛ("1:"&ДЛСТР(A1)));1))<=57)
* (КОДСИМВ(ПСТР(A1;СТРОКА(ДВССЫЛ("1:"&ДЛСТР(A1)));1))-48)
)
Как это работает:
ДЛСТР(A1)— определяет длину строки.ПСТРизвлекает каждый символ по порядку.КОДСИМВпроверяет, является ли символ цифрой.--()преобразуетИСТИНА/ЛОЖЬв1/0.СУММскладывает все найденные цифры.
| Исходное значение | Формула | Результат |
|---|---|---|
12345 | =СУММ(...) (см. выше) | 15 |
"А1Б2В3" | =СУММ(...) | 6 |
15.07.2026 | =СУММ(...) | 19 |
"Тест: 100%" | =СУММ(...) | 1 |
3. Альтернатива: функция СУММПРОИЗВ + ПОДСТА
Более компактный вариант для текста с цифрами — использование СУММПРОИЗВ с регулярным выражением через ПОДСТА. Подходит для Excel 2013 и новее:
=СУММПРОИЗВ(
--МНОЖ.ЕСЛИ(
--НЕ(ЕОШ(ПОДСТА(СТРОКА(ДВССЫЛ("1:9"));A1;СТРОКА(ДВССЫЛ("1:9")))))
; СТРОКА(ДВССЫЛ("1:9")))
)
Разбор:
- ✅
ПОДСТАищет вхождение каждой цифры (1–9) в тексте. - ✅
МНОЖ.ЕСЛИумножает найденную цифру на её значение. - ✅
СУММПРОИЗВсуммирует результаты. - ❌ Не работает с
0(нужно добавлять отдельное условие).
⚠️ Внимание: В Excel 2010 и старше МНОЖ.ЕСЛИ недоступна. Используйте метод из раздела 2 или VBA.
4. Подсчёт цифр в диапазоне ячеек
Чтобы посчитать сумму всех цифр во всём диапазоне (например, A1:A10), оберните любую из формул выше в СУММ:
=СУММ(
СУММПРОИЗВ(--НЕ(ЕОШ(ПОДСТА(СТРОКА(ДВССЫЛ("1:9"));A1:A10;СТРОКА(ДВССЫЛ("1:9")))))) * СТРОКА(ДВССЫЛ("1:9"))
)
Для диапазона с числами и текстом лучше создать вспомогательный столбец:
- В столбце
Bпримените формулу из раздела 2 для каждой ячейкиA1,A2и т.д. - Внизу столбца
Bиспользуйте=СУММ(B1:B10).
| Диапазон | Формула | Результат |
|---|---|---|
A1:A3 с значениями 123, "А4Б5", 678 | =СУММ(формула для A1:A3) | 28 (6+9+13) |
B2:B5 с датами 10.05.2023, 11.06.2023 | =СУММ(формула для B2:B5) | 24 |
Проверьте, нет ли в ячейках ошибок (#ДЕЛ/0!, #ЗНАЧ!)|Убедитесь, что текстовые данные не содержат неразрывных пробелов (используйте =ПЕЧСИМВ())|Для больших диапазонов (>1000 строк) используйте Power Query или VBA|Сохраните резервную копию файла перед массовыми вычислениями-->
5. Автоматизация через VBA-макрос
Для обработки больших объёмов данных или регулярного использования напишите VBA-функцию. Откройте редактор (Alt+F11), вставьте новый модуль и добавьте код:
Function SumDigits(rng As Range) As Long
Dim cell As Range
Dim char As String
Dim i As Integer
Dim sum As Long
For Each cell In rng
For i = 1 To Len(cell.Value)
char = Mid(cell.Value, i, 1)
If IsNumeric(char) Then
sum = sum + Val(char)
End If
Next i
Next cell
SumDigits = sum
End Function
Теперь в Excel можно использовать =SumDigits(A1) для одной ячейки или =SumDigits(A1:A10) для диапазона. Преимущества:
- ✅ Работает с любыми символами (текст, даты, спецсимволы).
- ✅ Обрабатывает диапазоны за один вызов.
- ✅ Быстрее формул для больших данных (>10 000 строк).
- ❌ Требует разрешения на выполнение макросов.
⚠️ Внимание: Если макрос возвращает#VALUE!, проверьте настройки безопасности Excel:Файл → Параметры → Центр управления безопасностью → Параметры центра управления безопасностью → Настройки макросов(выберите "Включить все макросы").
Как ускорить макрос для 100 000+ строк
Добавьте в начало кода строку Application.ScreenUpdating = False и в конец — Application.ScreenUpdating = True. Это отключит обновление экрана во время выполнения. Также замените For Each на обработку массива:
Dim arr As Variant
arr = rng.Value
For i = 1 To UBound(arr, 1)
For j = 1 To Len(arr(i, 1))
' ... обработка ...
Next j
Next i
6. Типичные ошибки и как их исправить
Даже с правильными формулами результат может быть неверным. Рассмотрим распространённые проблемы:
| Ошибка | Причина | Решение |
|---|---|---|
#ЗНАЧ! | В ячейке текст без цифр или пустая ячейка. | Добавьте проверку ЕСЛИ(A1="";0;формула). |
#ЧИСЛО! | Слишком длинная строка (>32767 символов). | Разбейте данные на части или используйте VBA. |
| Неправильная сумма | Формула не учитывает 0. | Добавьте в СУММПРОИЗВ условие для 0: |
| Медленная работа | Слишком много вложенных функций. | Переведите данные в Значения (Копировать → Специальная вставка). |
Особое внимание уделите региональным настройкам:
- 📌 В русскоязычной версии Excel разделитель аргументов функции —
;, в англоязычной —,. - 📌 Функции
ПОДСТАиПОИСКчувствительны к регистру в некоторых версиях. - 📌 Даты хранятся как числа — для их обработки сначала преобразуйте в текст (
=ТЕКСТ(A1;"дд.мм.гггг")).
7. Продвинутые сценарии: сумма цифр с условиями
Иногда нужно суммировать цифры только при выполнении условий. Например:
- 🔢 Суммировать цифры только в ячейках, где число > 1000.
- 🔢 Учитывать только нечётные цифры.
- 🔢 Игнорировать цифры после определённого символа (например,
"123-456"→ суммировать только1+2+3).
Пример формулы для суммы цифр в ячейках, где значение > 1000:
=СУММЕСЛИ(
A1:A10; ">1000";
--(ДЛСТР(A1:A10)-ДЛСТР(ПОДСТА(A1:A10;"0";""))) * --ЛЕВБ(A1:A10;1) + ...
' ... продолжение формулы разбора цифр
)
Для нечётных цифр модифицируйте универсальную формулу (раздел 2), добавив проверку:
=СУММ(
--(КОДСИМВ(ПСТР(A1;СТРОКА(ДВССЫЛ("1:"&ДЛСТР(A1)));1))>=49);
--(КОДСИМВ(ПСТР(A1;СТРОКА(ДВССЫЛ("1:"&ДЛСТР(A1)));1))<=57);
--(НЕЧЁТ(КОДСИМВ(ПСТР(A1;СТРОКА(ДВССЫЛ("1:"&ДЛСТР(A1)));1))-48))
* (КОДСИМВ(ПСТР(A1;СТРОКА(ДВССЫЛ("1:"&ДЛСТР(A1)));1))-48)
)
FAQ: Частые вопросы
Можно ли посчитать сумму цифр в Google Таблицах?
Да, все приведённые формулы работают и в Google Sheets, за исключением ДВССЫЛ (замените на INDIRECT) и VBA (используйте Apps Script). Например, универсальная формула для Google Sheets:
=SUM(
ARRAYFORMULA(
IF(CODE(MID(A1;ROW(INDIRECT("1:"&LEN(A1)));1))>=48;
IF(CODE(MID(A1;ROW(INDIRECT("1:"&LEN(A1)));1))<=57;
CODE(MID(A1;ROW(INDIRECT("1:"&LEN(A1)));1))-48;0);0)
)
)
Почему формула возвращает 0 для ячейки с числом?
Вероятные причины:
- Ячейка отформатирована как текст. Проверьте формат (
ЧисловойилиОбщий). - Число хранится как дата (например,
15.07.2026— это число45487в формате даты). Преобразуйте в текст (=ТЕКСТ(A1;"ддммгггг")). - Формула не учитывает ноль. Добавьте условие для
0(код символа48).
Как посчитать сумму цифр в столбце с телефонными номерами?
Используйте универсальную формулу (раздел 2) или VBA. Для телефонов в формате +7 (123) 456-78-90 предварительно удалите нецифровые символы:
=СУММ(
--(КОДСИМВ(ПСТР(ПОДСТА(ПОДСТА(ПОДСТА(ПОДСТА(A1;"(";"");")";"");"-";"");" ";"");
СТРОКА(ДВССЫЛ("1:"&ДЛСТР(A1)));1))>=48);
--(...)<=57)
* (...)-48
)
Есть ли готовая надстройка для этой задачи?
Да, в Excel App Store доступны бесплатные надстройки:
- Kutools for Excel (функция
Sum Numbers in Cells). - Ablebits (инструмент
Sum digits). - Power Query (встроенный в Excel 2016+) — импортируйте данные как таблицу и добавьте пользовательский столбец с формулой.
Для установки: Вставка → Надстройки → Просмотреть надстройки.
Как посчитать сумму цифр в диапазоне с учётом цвета ячейки?
Стандартными формулами это невозможно. Используйте VBA:
Function SumDigitsByColor(rng As Range, color As Range) As Long
Dim cell As Range, char As String, i As Integer
Dim sum As Long, targetColor As Long
targetColor = color.Interior.Color
For Each cell In rng
If cell.Interior.Color = targetColor Then
For i = 1 To Len(cell.Value)
char = Mid(cell.Value, i, 1)
If IsNumeric(char) Then sum = sum + Val(char)
Next i
End If
Next cell
SumDigitsByColor = sum
End Function
Вызов: =SumDigitsByColor(A1:A10;B1), где B1 — ячейка с нужным цветом фона.