Разделение чисел по разрядам в Excel: от простых формул до VBA

При попытке разделить число 1234567 на разряды в Excel (например, получить 1 234 567 или вытащить каждую цифру отдельно) пользователи часто сталкиваются с ошибкой #ЗНАЧ! при использовании стандартных функций. Проблема возникает из-за того, что программа по умолчанию воспринимает числа как математическую величину, а не как текстовый набор символов. Чтобы корректно разбить цифры по разрядам — единицы, десятки, сотни и т.д. — требуется преобразовать число в строку или применить специализированные функции.

В этой статье рассмотрим 5 рабочих методов: от базовых текстовых функций (ЛЕВСИМВ, ПСТР) до автоматизации через VBA. Особое внимание уделим типичным ошибкам, например, когда после разделения числа на разряды результат отображается как дата (12.03.1967 вместо 1 234 567). Все примеры протестированы в Excel 2016–2023 и Excel Online.

1. Разделение числа на разряды с помощью текстовых функций

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

Пример для числа 1234567 в ячейке A1:

  • 🔢 Единицы: =ПРАВСИМВ(ТЕКСТ(A1;0);1) → вернёт 7
  • 🔢 Десятки: =ПСТР(ТЕКСТ(A1;0);6;1) → вернёт 6
  • 🔢 Сотни: =ПСТР(ТЕКСТ(A1;0);5;1) → вернёт 5
  • 🔢 Тысячи: =ПСТР(ТЕКСТ(A1;0);4;1) → вернёт 4

Функция ТЕКСТ(A1;0) преобразует число в строку без десятичных знаков. Аргумент 0 в формате указывает на отсутствие дробной части. Если число содержит запятые (например, 1 234,56), используйте формат "0" в кавычках.

2. Автоматическое форматирование с разделителями разрядов

Если цель — просто отобразить число с пробелами между разрядами (например, 1 234 567), используйте формат ячеек. Этот метод не разбивает цифры по отдельным ячейкам, но визуально упрощает восприятие больших чисел.

Инструкция:

  1. Выделите ячейку с числом.
  2. Нажмите Ctrl+1 (или правая кнопка → Формат ячеек).
  3. Перейдите на вкладку Число → выберите категорию Числовой.
  4. В поле Образец введите # ##0 (для российского формата) или #,##0 (для западного формата с запятыми).

Ограничение метода: форматирование не сохраняется при экспорте в .csv или копировании значений. Чтобы зафиксировать разделители, используйте функцию =ТЕКСТ(A1;"# ##0").

📊 Какой формат разделителей вы используете чаще?
Пробелы (1 234 567)
Запятые (1,234,567)
Точки (1.234.567)
Не использую

3. Разделение на отдельные ячейки с помощью "Текст по столбцам"

Для разбивки числа на отдельные цифры по столбцам (каждая цифра в своей ячейке) используйте инструмент Текст по столбцам. Этот метод подходит для однократной обработки данных и не требует знания формул.

Пошаговая инструкция:

  1. Выделите ячейку с числом.
  2. Перейдите на вкладку ДанныеТекст по столбцам.
  3. Выберите С разделителями → нажмите Далее.
  4. Снимите все галочки в разделе Разделители (должно остаться пусто).
  5. Нажмите Готово.

Excel автоматически разобьёт каждую цифру по отдельным столбцам. Важно: инструмент работает только с текстовыми данными. Если число отображается как дата (например, 12.03.1967), предварительно преобразуйте его в текст функцией =ТЕКСТ(A1;"0").

Проверьте, что число отображается как текст (выровнено по левому краю)|Удалите лишние символы (знаки валюты, скобки)|Скопируйте исходные данные в резервную ячейку|Убедитесь, что справа достаточно пустых столбцов-->

4. Использование функции РАЗДЕЛИТЬ (Excel 365 и 2021)

В новых версиях Excel 365 и Excel 2021 появилась функция РАЗДЕЛИТЬ (TEXTSPLIT), которая упрощает разбивку чисел на разряды. Она позволяет разделить строку по заданному символу или массиву разделителей.

Пример для числа 1234567:

=РАЗДЕЛИТЬ(ПОДСТАВИТЬ(ТЕКСТ(A1;"0");"";" ");" ")

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

  1. ТЕКСТ(A1;"0") — преобразует число в строку.
  2. ПОДСТАВИТЬ(...;"";" ") — вставляет пробел между каждой цифрой (заменяет "ничего" на пробел).
  3. РАЗДЕЛИТЬ(...;" ") — разбивает строку по пробелам, возвращая массив цифр.

Результат будет динамическим массивом, который автоматически заполнит соседние ячейки. Для старых версий Excel используйте комбинацию ПСТР + СТРОКА (см. следующий раздел).

5. Динамическое разделение с помощью массива формул

Для пользователей Excel 2019 и старше, у которых нет функции РАЗДЕЛИТЬ, подойдёт формула массива на основе ПСТР и СТРОКА. Она автоматически адаптируется под длину числа и возвращает каждую цифру в отдельной строке.

Формула для ячейки A1:

=ЕСЛИОШИБКА(ПСТР($A$1;СТРОКА(A1);1);"")

Как применять:

  1. Введите формулу в первую ячейку столбца (например, B1).
  2. Протяните формулу вниз на количество строк, равное количеству цифр в числе.
  3. Нажмите F9, чтобы обновить значения.

Формула вернёт пустую строку ("") после извлечения всех цифр. Чтобы избежать пустых ячеек, добавьте условие:

=ЕСЛИ(СТРОКА(A1)<=ДЛСТР($A$1); ПСТР($A$1;СТРОКА(A1);1); "")
Почему формула возвращает #ЗНАЧ!

Ошибка возникает, если ячейка A1 содержит не текст, а число. Решение: преобразуйте данные в текст функцией =ТЕКСТ(A1;"0") или добавьте апостроф перед числом ('1234567).

6. Автоматизация через VBA (для продвинутых пользователей)

Если требуется регулярно разбивать числа на разряды, создайте пользовательскую функцию на VBA. Она позволит разделять цифры как по столбцам, так и по строкам, а также добавлять пользовательские разделители (пробелы, запятые, тире).

Код макроса для вставки в Редактор VBA (Alt+F11):

Function SplitDigits(ByVal num As Variant, Optional delimiter As String = " ") As String

Dim digit As String

Dim result As String

Dim i As Integer

num = CStr(num) ' Преобразуем в строку

For i = 1 To Len(num)

digit = Mid(num, i, 1)

result = result & digit & delimiter

Next i

SplitDigits = Left(result, Len(result) - 1) ' Убираем последний разделитель

End Function

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

  • 📝 Введите в ячейку: =SplitDigits(A1; "-") → вернёт 1-2-3-4-5-6-7.
  • 📝 Для пробелов: =SplitDigits(A1) → вернёт 1 2 3 4 5 6 7.
  • 📝 Для разбивки по строкам: скопируйте результат в столбец с помощью Текст по столбцам.
⚠️ Внимание: Макросы работают только в файлах с расширением .xlsm. При первом запуске может появиться предупреждение о безопасности — разрешите выполнение макросов в Параметрах Excel.

Сравнение методов: какой выбрать?

Выбор способа зависит от задачи и версии Excel. Ниже таблица с сравнением ключевых параметров:

Метод Подходит для версий Автоматизация Сохранение формата Сложность
Текстовые функции (ПСТР) Все версии Нет Да Низкая
Форматирование ячеек Все версии Нет Только визуально Очень низкая
Текст по столбцам Все версии Нет Да Средняя
Функция РАЗДЕЛИТЬ Excel 365, 2021 Да Да Низкая
VBA Все версии Да Да Высокая

Для разовых задач подойдёт Текст по столбцам или текстовые функции. Для регулярной работы с большими наборами данных оптимально использовать РАЗДЕЛИТЬ (если доступно) или VBA.

FAQ: Частые вопросы по разделению чисел на разряды

Почему после применения "Текст по столбцам" число превращается в дату?

Excel автоматически преобразует числа в формате ММ.ДД.ГГ или ДД.ММ.ГГ в даты. Решение: перед разбивкой преобразуйте число в текст функцией =ТЕКСТ(A1;"0") или добавьте апостроф перед числом ('1234567).

Как разделить число на разряды, если оно содержит десятичную часть?

Используйте функцию ТЕКСТ с указанием количества десятичных знаков. Например, для числа 1234.56:

=ПСТР(ТЕКСТ(A1;"0.00");1;1)  ' Извлечёт "1"

Для разделения целой и дробной частей по отдельности:

=ЦЕЛОЕ(A1)  ' Целая часть

=A1-ЦЕЛОЕ(A1) ' Дробная часть

Можно ли разделить отрицательные числа?

Да, но сначала удалите знак "минус" с помощью функции ПОДСТАВИТЬ:

=ПОДСТАВИТЬ(ТЕКСТ(A1;"0");"-";"")

Затем применяйте любой из описанных методов. Знак можно вернуть в итоговом результате или обработать отдельно.

Как разделить очень большие числа (более 15 знаков)?

Excel по умолчанию округляет числа длиннее 15 знаков. Чтобы избежать потери точности:

  1. Сохраните число как текст (добавьте апостроф или используйте =ТЕКСТ(A1;"0")).
  2. Примените метод Текст по столбцам или текстовые функции.

Для чисел длиннее 256 символов используйте VBA или разбейте исходные данные на части.

Как вернуть исходное число из разделённых разрядов?

Если разряды находятся в отдельных ячейках (например, B1:B7), используйте функцию СЦЕПИТЬ:

=СЦЕПИТЬ(B1;B2;B3;B4;B5;B6;B7)

Чтобы получить числовой формат, добавьте ЗНАЧЕН:

=ЗНАЧЕН(СЦЕПИТЬ(B1;B2;B3;B4;B5;B6;B7))