Зачем разделять цифры в числах и когда это пригодится
Работа с числами в Microsoft Excel часто требует не только вычислений, но и манипуляций с их структурой. Разделение цифр в числе — задача, с которой сталкиваются бухгалтеры, аналитики данных и даже маркетологи. Представьте: у вас есть столбец с 12-значными артикулами, где первые 3 цифры — код категории, следующие 4 — подкатегория, а оставшиеся — уникальный идентификатор. Или нужно вытащить год из даты в формате ДДММГГГГ. Вручную это делать нереально, если речь идет о тысячах строк.
В этой статье мы разберем 5 способов разделения цифр — от элементарных функций до автоматизации через VBA. Вы узнаете, как:
- 🔢 Извлечь отдельные цифры по их позиции в числе
- 📊 Разбить число на группы (например, по 3 цифры для форматирования)
- 🤖 Автоматизировать процесс для больших массивов данных
- 🔄 Обработать числа с ведущими нулями (например, телефонные номера)
Важно: методы работают во всех современных версиях Excel (2010–2023) и Excel Online, но некоторые функции (например, TEXTSPLIT) доступны только в Excel 365.
Метод 1: Функции ЛЕВСИМВ, ПРАВСИМВ и ПСТР — базовый подход
Это три кита, на которых держится большинство операций с текстом в Excel. Они преобразуют число в строку и возвращают нужные символы:
- 📌
ЛЕВСИМВ(текст; количество_символов)— берет символы слева - 📌
ПРАВСИМВ(текст; количество_символов)— берет символы справа - 📌
ПСТР(текст; начальная_позиция; количество_символов)— берет символы с указанной позиции
Пример: у вас есть число 123456789, и нужно извлечь:
- 🔹 Первые 3 цифры:
=ЛЕВСИМВ(A1;3)→ вернет123 - 🔹 Последние 4 цифры:
=ПРАВСИМВ(A1;4)→ вернет6789 - 🔹 Цифры с 4 по 6:
=ПСТР(A1;4;3)→ вернет456
Нюанс: если число хранится как число (а не текст), Excel может автоматически удалить ведущие нули. Чтобы этого избежать, предварительно преобразуйте данные в текст с помощью функции ТЕКСТ или добавьте апостроф перед числом ('0012345).
| Задача | Формула | Результат для 123456789 |
|---|---|---|
| Первые 2 цифры | =ЛЕВСИМВ(A1;2) |
12 |
| Цифры со 2 по 5 | =ПСТР(A1;2;4) |
2345 |
| Последние 3 цифры | =ПРАВСИМВ(A1;3) |
789 |
| Каждая вторая цифра (нечетные позиции) | =ПСТР(A1;1;1)&ПСТР(A1;3;1)&ПСТР(A1;5;1) |
13579 |
⚠️ Внимание: ФункцияПСТРв английской версии Excel называетсяMID. Если у вас русскоязычная версия, но формулы не работают, проверьте язык функций в настройках (Файл → Параметры → Формулы → Работа с формулами → Язык формул).
Метод 2: Разделение числа на разряды с помощью формул массива
Если нужно разделить каждую цифру числа по отдельности (например, для анализа распределения цифр в большом наборе данных), используйте формулу массива:
=--ПСТР(ТЕКСТ(A1;"0");СТРОКА(ДВССЫЛ("1:"&ДЛСТР(A1)));1)
Как это работает:
- Функция
ТЕКСТ(A1;"0")преобразует число в строку. ДЛСТР(A1)определяет длину числа (количество цифр).ДВССЫЛ("1:"&ДЛСТР(A1))создает массив номеров позиций от 1 до длины числа.ПСТРизвлекает каждую цифру по ее позиции.--преобразует текстовые цифры обратно в числа.
Чтобы формула заработала, введите ее как формулу массива:
- Выделите диапазон ячеек, куда должны выводиться цифры (например,
B1:J1для 9-значного числа). - Введите формулу в строку формул.
- Нажмите
CTRL+SHIFT+ENTER(в Excel 365 достаточно простоENTER).
Почему формула возвращает #ЗНАЧ!?
Ошибка #ЗНАЧ! появляется, если выделили меньше ячеек, чем цифр в числе. Например, для числа 12345 нужно выделить 5 ячеек. Если выделите 3, формула не сможет вернуть все цифры.
Этот метод — единственный способ разделить цифры в числе без VBA, если вам нужна каждая цифра отдельно (например, для построения гистограммы распределения цифр в большом датасете).
Метод 3: Функция ТЕКСТ для форматированного разделения
Если цель — не извлечь цифры, а отформатировать число с разделителями (например, добавить пробелы или дефисы каждые 3 цифры), используйте функцию ТЕКСТ с пользовательским форматом:
=ТЕКСТ(A1;"# ##0-00-00")
Примеры форматирования:
- 📍 Разделить пробелами каждые 3 цифры:
=ТЕКСТ(A1;"# ##0 ##0 ##0")→123 456 789 - 📍 Телефонный формат:
=ТЕКСТ(A1;"+7 (###) ###-##-##")→+7 (123) 456-78-90 - 📍 Номер карты:
=ТЕКСТ(A1;"#### #### #### ####")→1234 5678 9012 3456
Ограничение: функция ТЕКСТ возвращает текстовое значение, поэтому дальнейшие математические операции с результатом будут невозможны. Если нужно сохранить числовой формат, используйте ПОДСТАВИТЬ:
=ПОДСТАВИТЬ(ПОДСТАВИТЬ(ТЕКСТ(A1;"# ##0 ##0 ##0");" ";"");"";"")
⚠️ Внимание: При использовании функцииТЕКСТс форматом"# ##0"для числа12345результат будет12 345, а не123 45. Формат всегда группирует цифры справа налево! Чтобы разделить число как12-345, используйте=ЛЕВСИМВ(A1;2)&"-"&ПРАВСИМВ(A1;3).
Метод 4: Power Query — разделение чисел в больших таблицах
Если вам нужно разделить цифры в тысячах строк и сделать это максимально гибко, используйте Power Query (доступен в Excel 2016+ и Excel 365). Этот инструмент позволяет:
- 🔄 Разделить столбец по количеству символов
- 📂 Добавить префиксы/суффиксы к каждому фрагменту
- 🔄 Применить преобразование ко всем файлам в папке
Пошаговая инструкция:
- Выделите исходные данные и нажмите
Данные → Из таблицы/диапазона(илиДанные → Получить данные → Из таблицы/диапазонав Excel 2016). - В открывшемся окне Power Query выделите столбец с числами.
- Перейдите на вкладку
Преобразовать → Разделить столбец → По количеству символов. - Укажите количество символов для разделения (например,
3для разделения каждые 3 цифры). - Выберите направление разделения:
Слева направоилиСправа налево. - Нажмите
ОКиЗакрыть и загрузить.
Power Query создаст новые столбцы с фрагментами чисел. Главное преимущество этого метода — независимость от формул: данные обновляются при изменении исходного столбца, но не пересчитываются при каждом открытии файла (как формулы).
Выделить исходный диапазон без пустых строк|Преобразовать в таблицу (CTRL+T)|Проверить формат ячеек (должен быть "Текстовый")|Удалить лишние символы (пробелы, дефисы) с помощью ПЕЧСИМВ и ЗАМЕНИТЬ
-->
Метод 5: VBA-макрос для автоматизации
Если вам нужно разделить цифры в десятках тысяч строк или делать это регулярно, напишите простой макрос. Ниже пример кода, который разобьет число в выделенном диапазоне на отдельные цифры в соседних ячейках:
Sub SplitDigits()
Dim rng As Range
Dim cell As Range
Dim i As Integer, j As Integer
Dim numStr As String
Set rng = Selection
Application.ScreenUpdating = False
For Each cell In rng
If IsNumeric(cell.Value) Then
numStr = CStr(cell.Value)
For i = 1 To Len(numStr)
cell.Offset(0, i).Value = Mid(numStr, i, 1)
Next i
End If
Next cell
Application.ScreenUpdating = True
MsgBox "Готово! Цифры разделены.", vbInformation
End Sub
Как использовать:
- Нажмите
ALT+F11, чтобы открыть редактор VBA. - Вставьте код в новый модуль (
Вставка → Модуль). - Вернитесь в Excel, выделите диапазон с числами.
- Запустите макрос (
ALT+F8 → Выбрать SplitDigits → Выполнить).
Макрос создаст столько новых столбцов справа, сколько цифр в самом длинном числе выделенного диапазона. Преимущество: работает с числами любого размера (в отличие от формул массива, где нужно заранее знать максимальную длину).
⚠️ Внимание: Если в выделенном диапазоне есть ячейки с текстом (не числами), макрос пропустит их. Чтобы обработать и текстовые значения, замените строкуIf IsNumeric(cell.Value) ThenнаIf Not IsEmpty(cell.Value) Then.
Частые ошибки и как их избежать
Даже в простых операциях с числами легко допустить ошибку. Вот самые распространенные проблемы и их решения:
| Ошибка | Причина | Решение |
|---|---|---|
Формула возвращает #ИМЯ? |
Опечатка в названии функции или английский язык формул | Проверьте регистр и язык (Файл → Параметры → Формулы) |
| Ведущие нули исчезают | Ячейка имеет числовой формат | Измените формат на "Текстовый" или добавьте апостроф ('00123) |
ПСТР возвращает пустоту |
Начальная позиция больше длины строки | Проверьте аргументы: ПСТР(текст; позиция; длина) |
| Формула массива не работает | Не нажали CTRL+SHIFT+ENTER (в старых версиях) |
Используйте F9, чтобы проверить выделенный диапазон |
Еще одна типичная проблема — неверное определение длины числа. Например, если в столбце есть числа разной длины (например, 123 и 123456), формулы вроде =ЛЕВСИМВ(A1;3) будут работать корректно только для 3-значных чисел. Решение:
- 🔹 Используйте
ДЛСТРдля динамического определения длины:=ЛЕВСИМВ(A1;ДЛСТР(A1)-3)(берет все цифры, кроме последних 3). - 🔹 Применяйте
ЕСЛИОШИБКАдля обработки исключений:=ЕСЛИОШИБКА(ЛЕВСИМВ(A1;5);"").
FAQ: Ответы на частые вопросы
Можно ли разделить число на цифры без формул?
Да, есть три способа:
- Текст по столбцам: Выделите столбец →
Данные → Текст по столбцам → С разделителями → Далее → Указать "Другой" и ввести разделитель (например, пробел, если его нет в числе) → Готово. Этот метод сработает, только если цифры в числе уже разделены символом (например,123-456). - Power Query: Как описано в Методе 4, позволяет разделить по фиксированному количеству символов.
- VBA: Макрос из Метода 5 разделит цифры без формул.
Как разделить число на группы по 2 цифры (например, для ИНН)?
Используйте комбинацию функций:
=ПСТР(ТЕКСТ(A1;"0000000000");1;2) & "-" & ПСТР(ТЕКСТ(A1;"0000000000");3;2) & "-" & ПСТР(ТЕКСТ(A1;"0000000000");5;2) & "-" & ПСТР(ТЕКСТ(A1;"0000000000");7;4)
Для 10-значного ИНН эта формула вернет формат 12-34-56-7890. Функция ТЕКСТ(A1;"0000000000") добавляет ведущие нули, если число короче 10 цифр.
Почему после разделения цифры отображаются как даты (например, 01.12)?
Это происходит, если Excel интерпретирует результат как дату. Решения:
- 🔹 Предварительно отформатируйте ячейки результата как "Текстовый".
- 🔹 Добавьте апостроф перед формулой:
='&ЛЕВСИМВ(A1;2). - 🔹 Используйте функцию
ТЕКСТдля явного преобразования:=ТЕКСТ(ЛЕВСИМВ(A1;2);"00").
Как разделить цифры в числе, если оно хранится как текст с разделителями (например, "123,456")?
Сначала удалите разделители с помощью ПОДСТАВИТЬ:
=ПОДСТАВИТЬ(ПОДСТАВИТЬ(A1;",";"");" ";"")
Затем применяйте методы из статьи. Если разделитель — пробел или неразрывный пробел, используйте =ПОДСТАВИТЬ(A1;СИМВОЛ(160);"") для неразрывного пробела.
Можно ли разделить цифры в онлайн-версии Excel?
Да, но с ограничениями:
- 🔹 Формулы (
ЛЕВСИМВ,ПРАВСИМВ,ПСТР) работают полностью. - 🔹 Power Query доступен в Excel Online, но с урезанным функционалом (нет некоторых опций разделения).
- 🔹 VBA в онлайн-версии недоступен.
- 🔹 Текст по столбцам работает, но интерфейс упрощен.
Для сложных задач рекомендуем использовать десктопную версию Excel.