Работа с числами в Microsoft Excel часто требует не только вычислений, но и правильного форматирования. Одна из распространённых задач — разделение цифр в ячейке на разряды, разбивка длинных чисел по столбцам или добавление разделителей для удобства чтения. Например, число 1000000 воспринимается хуже, чем 1 000 000 или 1,000,000. А что делать, если нужно вытащить каждую цифру в отдельную ячейку для дальнейшего анализа?
В этой статье мы разберём 5 способов разделения цифр — от базовых функций форматирования до продвинутых формул и макросов. Вы узнаете, как:
- Добавить разделители тысяч автоматически или вручную.
- Разбить число на отдельные цифры по столбцам (например, из 12345 получить 1|2|3|4|5).
- Использовать текстовые функции для нестандартного разделения (например, вставить дефис каждые 2 символа).
- Применить Power Query для обработки больших массивов данных.
- Автоматизировать процесс с помощью VBA-макросов.
Особое внимание уделим типовым ошибкам (например, почему формула =РАЗДЕЛИТЬ() не работает с числами) и нюансам для разных версий Excel (2010, 2016, 2019, 365).
1. Разделение цифр разрядами: пробелы, запятые, точки
Самая простая задача — сделать число удобочитаемым, добавив разделители между тысячами, миллионами и т.д. В Excel это можно сделать тремя способами: через форматирование ячеек, функции или ручной ввод.
✅ Способ 1: Формат ячеек (самый быстрый). Выделите ячейки с числами, нажмите Ctrl+1 (или правой кнопкой → Формат ячеек), выберите категорию Числовой и установите флажок Разделитель групп разрядов. Разделителем по умолчанию станет пробел (в русской версии) или запятая (в английской).
✅ Способ 2: Функция ТЕКСТ(). Если нужно сохранить число в текстовом формате с разделителями, используйте:
=ТЕКСТ(A1; "# ##0")
Где A1 — ячейка с числом, а "# ##0" — формат с пробелами. Для запятых замените на "#,##0".
⚠️ Внимание: Если после применения формата число отображается как ########, расширьте столбец — ячейка слишком узкая для нового формата.
- 📌 Плюсы: Быстро, не требует формул, сохраняет число в исходном виде (можно использовать в расчётах).
- 🚫 Минусы: Разделитель зависит от региональных настроек Windows. В английской версии по умолчанию будет запятая.
2. Разбивка числа на отдельные цифры по столбцам
Допустим, у вас в ячейке A1 лежит число 12345, а вам нужно получить каждую цифру в отдельной ячейке (B1=1, C1=2 и т.д.). Для этого есть 4 метода: от ручного до автоматизированного.
🔹 Метод 1: Функция ПСТР() (LEFT/MID/RIGHT). Используйте комбинацию текстовых функций:
=ПСТР($A1;1;1) // Первая цифра
=ПСТР($A1;2;1) // Вторая цифра
...
=ПСТР($A1;5;1) // Пятая цифра
Для английской версии: =MID($A$1;COLUMN(A1);1) (протяните формулу вправо).
🔹 Метод 2: Формула массива (для любых чисел). Введите в первую ячейку:
=--ПСТР($A1;СТРОКА(A1:A5);1)
Нажмите Ctrl+Shift+Enter (в старых версиях) или просто протяните вниз (в Excel 365).
Преобразовать число в текст (если нужно) с помощью =ТЕКСТ(A1;"0")
Проверить длину числа функцией =ДЛСТР(A1)
Создать достаточное количество столбцов для всех цифр
Использовать абсолютную ссылку на исходную ячейку ($A1)
-->
| Метод | Формула | Пример для 12345 |
Подходит для |
|---|---|---|---|
ПСТР() |
=ПСТР($A1;1;1) |
1 |
Чисел фиксированной длины |
| Формула массива | =--ПСТР($A1;СТРОКА(A1:A5);1) |
1, 2, 3, 4, 5 |
Любых чисел (требует настройки) |
| Power Query | Преобразование в таблицу | Столбец с цифрами | Больших массивов данных |
⚠️ Внимание: Если исходная ячейка содержит число (а не текст), функция ПСТР() может не сработать. Преобразуйте число в текст с помощью =ТЕКСТ(A1;"0") или добавьте апостроф перед числом ('12345).
3. Разделение числа на группы символов (например, по 2 или 3 цифры)
Иногда требуется разбить число на части по фиксированному количеству символов. Например:
- Из
12345678получить12-34-56-78(разбивка по 2 символа). - Из
123456789получить123 456 789(разбивка по 3 символа).
🔹 Решение с функцией ПОДСТАВИТЬ(). Для разбивки по 2 символа:
=ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A1;" ";);"-";);"..";"-");"...";"-")
Но этот способ громоздкий. Лучше использовать пользовательскую функцию на VBA (см. раздел 5) или Power Query.
🔹 Решение через Power Query (для Excel 2016+):
- Выделите данные →
Данные → Из таблицы/диапазона. - В редакторе Power Query добавьте пользовательский столбец с формулой:
=Text.From(List.Accumulate(
Text.ToList([Column1]),
"",
(state, current) => if Text.Length(state) Mod 2 = 0 and state <> "" then state & "-" & current else state & current
))
Где 2 — количество символов в группе.
4. Разделение чисел с помощью инструмента "Текст по столбцам"
Встроенный инструмент Текст по столбцам (или Text to Columns) часто упускают из виду, хотя он идеально подходит для разбивки чисел на части по фиксированной ширине или разделителю.
📌 Пошаговая инструкция:
- Выделите ячейки с числами.
- Перейдите в
Данные → Текст по столбцам. - Выберите Фиксированная ширина (если нужно разбить по позициям) или С разделителями (если в числе уже есть символы-разделители, например, дефисы).
- Для фиксированной ширины добавьте линии разрыва в предварительном просмотре (например, после каждого 2-го символа).
- Нажмите
Готово.
✅ Пример: Из числа 12345678 в ячейке A1 можно получить:
- 📊
B1=12,C1=34,D1=56,E1=78(разбивка по 2 символа). - 📊
B1=123,C1=456,D1=78(разбивка по 3/3/2 символа).
⚠️ Внимание: Инструмент Текст по столбцам заменяет исходные данные. Рекомендуем предварительно скопировать их в другой столбец или на новый лист.
5. Автоматизация с помощью VBA-макросов
Если вам регулярно нужно разбивать числа по сложным правилам (например, добавлять разделители каждые 4 символа или извлекать цифры через одну), стоит написать пользовательскую функцию на VBA.
🔹 Макрос для добавления разделителя каждые N символов:
- Нажмите
Alt+F11, чтобы открыть редактор VBA. - Вставьте новый модуль (
Insert → Module). - Скопируйте код:
Function AddSeparator(rng As Range, Optional sep As String = "-", Optional groupSize As Integer = 2) As String
Dim str As String, i As Integer, result As String
str = CStr(rng.Value)
For i = 1 To Len(str) Step groupSize
If i > 1 Then result = result & sep
result = result & Mid(str, i, groupSize)
Next i
AddSeparator = result
End Function
Теперь в ячейке можно использовать:
=AddSeparator(A1; "-"; 3)
Где A1 — ячейка с числом, "-" — разделитель, 3 — длина группы.
🔹 Макрос для разбивки числа на цифры по столбцам:
Sub SplitNumberToColumns()
Dim rng As Range, i As Integer, j As Integer
Dim numStr As String, cell As Range
Set rng = Selection
For Each cell In rng
numStr = CStr(cell.Value)
For i = 1 To Len(numStr)
cell.Offset(0, i).Value = Mid(numStr, i, 1)
Next i
Next cell
End Sub
Выделите ячейки с числами и запустите макрос — цифры разобьются по соседним столбцам.
Как защитить макрос от ошибок?
Добавьте в начало кода проверку на тип данных:
If Not IsNumeric(cell.Value) Then Exit Sub
Это предотвратит ошибки, если в ячейке окажется текст.
6. Типовые ошибки и как их избежать
При разделения цифр в Excel пользователи часто сталкиваются с пятью проблемами:
- Формулы не работают с числами. Решение: преобразуйте число в текст с помощью
=ТЕКСТ(A1;"0")или добавьте апостроф ('12345). - Разделители отображаются неверно. Проверьте региональные настройки:
Файл → Параметры → Дополнительно → Разделитель целой и дробной частей. - Функция
РАЗДЕЛИТЬ()недоступна. Эта функция появилась только в Excel 365. Для старых версий используйтеТЕКСТРАЗД()илиTEXTSPLIT()с эмуляцией. - Макрос не запускается. Убедитесь, что включена поддержка макросов (
Файл → Параметры → Центр управления безопасностью → Параметры центра → Включить все макросы). - Число преобразуется в дату. Например,
12-03-2026Excel воспримет как 12 марта. Решение: форматируйте ячейку как текст перед вводом.
📌 Совет для новичков: Если формула возвращает ошибку #ЗНАЧ!, проверьте:
- 🔍 Ячейка содержит текст, а не число (используйте
=ТИП(A1)=1для проверки). - 🔍 В формуле есть русские символы вместо английских (например,
;вместо,в разделителях аргументов). - 🔍 Диапазон ячеек заблокирован (проверьте защиту листа).
7. Продвинутые сценарии: регулярные выражения и Power Query
Для сложных задач (например, извлечения чисел из текста или разбивки по нестандартным правилам) пригодятся регулярные выражения и Power Query.
🔹 Регулярные выражения в Excel (через VBA). Добавьте в модуль функцию:
Function RegexSplit(text As String, pattern As String) As Variant
Dim regex As Object, matches As Object
Set regex = CreateObject("VBScript.RegExp")
regex.Pattern = pattern
regex.Global = True
Set matches = regex.Execute(text)
Dim result() As String, i As Integer
ReDim result(1 To matches.Count)
For i = 0 To matches.Count - 1
result(i + 1) = matches(i)
Next i
RegexSplit = result
End Function
Пример использования для извлечения всех чисел из текста "Заказ 12345 на сумму 999 руб.":
=RegexSplit(A1; "\d+")
🔹 Power Query для разбивки чисел. Алгоритм:
- Загрузите данные в Power Query (
Данные → Из таблицы/диапазона). - Добавьте пользовательский столбец с формулой:
=Text.Split([Column1], 3)
Где 3 — длина группы. Результат будет массивом, который можно развернуть в отдельные столбцы.
📌 Когда использовать Power Query:
- 📊 Обработка больших массивов (тысячи строк).
- 🔄 Необходимость повторного использования одного и того же преобразования.
- 🔧 Сложные правила разбивки (например, по нескольким разделителям).
FAQ: Ответы на частые вопросы
Как разделить число пробелами, если в настройках по умолчанию стоит запятая?
Используйте пользовательский формат: выделите ячейки → Ctrl+1 → категория Все форматы → введите # ##0. Или измените региональные настройки Windows (Панель управления → Часы и регион → Изменить форматы).
Можно ли разбить число на цифры без формул?
Да, с помощью инструмента Текст по столбцам (раздел 4) или макроса (раздел 5). Также в Excel 365 доступна функция =ТЕКСТРАЗД() (или TEXTSPLIT), которая упрощает задачу.
Почему после разбивки числа на цифры в ячейках появляются нули?
Это происходит, если исходное число было текстом, а Excel интерпретирует отдельные символы как числа. Решение: предварительно отформатируйте целевые ячейки как текст или используйте апостроф ('0).
Как разделить номер телефона по разрядам (например, +7 (999) 123-45-67)?
Используйте комбинацию функций:
= "+7 (" & ПСТР(A1;2;3) & ") " & ПСТР(A1;5;3) & "-" & ПСТР(A1;8;2) & "-" & ПСТР(A1;10;2)
Где A1 содержит текст 79991234567.
Можно ли автоматически разбивать числа при вводе?
Да, с помощью условного форматирования или события VBA. Например, добавьте этот код в модуль листа:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng As Range, cell As Range
Set rng = Intersect(Target, Me.Range("A:A")) ' Столбец A
If Not rng Is Nothing Then
Application.EnableEvents = False
For Each cell In rng
If IsNumeric(cell.Value) Then
cell.NumberFormat = "# ##0"
End If
Next cell
Application.EnableEvents = True
End If
End Sub
Теперь при вводе числа в столбец A автоматически будут добавляться пробелы-разделители.