Работа с числовыми данными в Microsoft Excel часто требует нестандартного форматирования — например, когда нужно разделить цифры запятыми для удобства чтения, подготовки отчётов или экспорта в другие системы. Типичная ситуация: у вас есть столбец с числами 1234567, а нужно получить 1,234,567 (разделение тысяч) или 1,2,3,4,5,6,7 (запятая между каждой цифрой). В этой статье разберём все возможные сценарии — от базовых настроек формата до автоматизации через Power Query и VBA.
Важно понимать, что Excel по умолчанию разделяет тысячи незащищёнными пробелами (в русскоязычных версиях) или запятыми (в англоязычных). Но если вам нужно именно вставить запятые между ВСЕМИ цифрами или каждыми N символами, стандартные инструменты не подойдут — потребуются формулы или скрипты. Мы рассмотрим решения для всех версий Excel (2010–2023), включая Office 365 с динамическими массивами.
1. Стандартное форматирование тысяч: запятые через каждые 3 цифры
Если цель — просто разделить тысячи (например, преобразовать 1000000 в 1 000 000 или 1,000,000), используйте встроенные настройки формата. Этот метод не меняет само значение ячейки, а только её отображение.
Алгоритм:
- Выделите ячейки с числами.
- Нажмите
Ctrl+1(или правой кнопкой →Формат ячеек). - Перейдите на вкладку
Число→ выберите категориюЧисловой. - В поле
Число десятичных знаковукажите0(если не нужны дробные части). - Поставьте галочку
Разделитель групп разрядов.
Обратите внимание: в русскоязычных версиях Excel разделителем по умолчанию служит пробел, а в англоязычных — запятая. Чтобы изменить символ-разделитель:
- 🔹 В Windows:
Панель управления → Язык и региональные стандарты → Дополнительные параметры → Разделитель групп разрядов. - 🔹 В Excel:
Файл → Параметры → Дополнительно → Параметры редактирования → Использовать системные разделители(снимите галочку, чтобы вручную задать символ).
⚠️ Внимание: Если после применения формата в ячейке отображается ########, расширьте столбец — данные не помещаются по ширине.
2. Формулы для разделения цифр запятыми: TEXT, SUBSTITUTE, CONCAT
Когда нужно вставить запятую между каждой цифрой (например, преобразовать 12345 в 1,2,3,4,5), стандартное форматирование не поможет. Здесь пригодятся текстовые функции. Рассмотрим 3 варианта формул.
Способ 1: Функция TEXT с пользовательским форматом
Подходит для разделения групп разрядов (аналог ручного форматирования, но через формулу):
=TEXT(A1; "#,##0")
Где A1 — ячейка с исходным числом. Результат: 1,234,567.
Способ 2: Разделение каждой цифры запятой
Используем комбинацию MID, ROW и TEXTJOIN (для Excel 2019+):
=TEXTJOIN(",", ИСТИНА, СРЗНАЧ(ПСТР($A1; СТРОКА(ДВССЫЛ("1:" & ДЛСТР($A1))); 1)))
Для старых версий Excel замените TEXTJOIN на:
=ПОДСТАВИТЬ(СЦЕПИТЬ(ПСТР($A1; СТРОКА(ДВССЫЛ("1:" & ДЛСТР($A1))); 1); ","); ", "; ",")
📋 Проверьте версию Excel (для TEXTJOIN нужна 2019+)
📋 Убедитесь, что исходные данные — текст (если числа с ведущими нулями)
📋 Скопируйте формулу как значение, если нужно сохранить результат-->
Способ 3: Разделение каждых N цифр
Допустим, нужно разделить число запятыми через каждые 2 цифры (123456 → 12,34,56). Формула:
=ПОДСТАВИТЬ(СЦЕПИТЬ(ЕСЛИОШИБКА(ПСТР($A1; СТРОКА(ДВССЫЛ("1:" & ДЛСТР($A1)/2))*2-1; 2); ""); ","); ", "; ",")
| Исходное число | Формула | Результат |
|---|---|---|
1234567 |
=TEXT(A1; "#,##0") |
1,234,567 |
12345 |
=TEXTJOIN(",", 1, MID(A1, ROW(1:5), 1)) |
1,2,3,4,5 |
1000000 |
=SUBSTITUTE(TEXT(A1; "0,,"), " ", ",") |
1,000,000 |
3. Power Query: автоматизация для больших данных
Если нужно обработать тысячи строк, ручное применение формул неэффективно. Power Query (доступен в Excel 2016+) позволяет автоматизировать процесс:
- Выделите данные →
Данные → Из таблицы/диапазона(Excel создаст таблицу, если её нет). - В открывшемся редакторе Power Query выберите столбец с числами.
- Перейдите на вкладку
Преобразовать→Формат → Заменить. - В поле
Найтивведите регулярное выражение для разделения:- 🔢 Для разделения тысяч:
(\d)(?=(\d{3})+(?!\d))→ заменить на$1,. - 🔢 Для запятой между каждой цифрой: вставьте пользовательский столбец с формулой
=Text.Combine(List.Transform(Text.ToList([Column1]), each _), ",").
- 🔢 Для разделения тысяч:
Закрыть и загрузить.Преимущество Power Query — возможность обновлять данные одним кликом (Данные → Обновить все), если исходные числа изменятся.
4. Макросы VBA: для продвинутых пользователей
Если вам нужно постоянно преобразовывать числа с запятыми (например, для еженедельных отчётов), напишите простой макрос. Откройте редактор VBA (Alt+F11) и вставьте код в модуль:
Sub AddCommasBetweenDigits()
Dim rng As Range
Dim cell As Range
Dim str As String
Dim i As Integer
Set rng = Selection ' Выделенный диапазон
For Each cell In rng
If IsNumeric(cell.Value) Then
str = CStr(cell.Value)
For i = 2 To Len(str)
str = Left(str, i - 1) & "," & Mid(str, i)
i = i + 1
Next i
cell.Value = str
End If
Next cell
End Sub
Как использовать:
- Выделите ячейки с числами.
- Запустите макрос (
Alt+F8→ выберитеAddCommasBetweenDigits→Выполнить).
⚠️ Внимание: Макрос изменяет исходные данные (преобразует числа в текст). Сначала сохраните резервную копию файла.
Как вернуть числа обратно?
Если после применения макроса вам снова нужны числа (без запятых), используйте формулу =ЗНАЧЕН(ПОДСТАВИТЬ(A1; ","; "")) или запишите обратный макрос с функцией Replace.
5. Особенности для чисел с ведущими нулями
Если ваши данные содержат ведущие нули (например, 0012345), Excel по умолчанию обрезает их. Чтобы сохранить нули и разделить цифры запятыми:
- Преобразуйте числа в текст:
- 📌 Выделите ячейки →
Формат ячеек → Текстовый. - 📌 Или используйте формулу
=ТЕКСТ(A1; "0").
- 📌 Выделите ячейки →
Пример: чтобы из 0012345 получить 0,0,1,2,3,4,5, используйте:
=TEXTJOIN(",", 1, MID(TEXT(A1; "0"); ROW(1:7); 1))
6. Частые ошибки и как их избежать
При работе с запятыми в Excel пользователи часто сталкиваются с типичными проблемами:
- 🚫 Ошибка #ЗНАЧ!: возникает, если формула ожидает число, а ячейка содержит текст. Решение: используйте
=ЗНАЧЕН(A1)для преобразования. - 🚫 Неправильный разделитель: в русскоязычном Excel запятая может восприниматься как десятичный разделитель. Решение: замените её на точку с запятой в формулах (
=ПОДСТАВИТЬ(A1; ","; ";")). - 🚫 Потеря данных: при использовании
Формат ячеекизменяется только отображение, а не значение. Для реального разделения используйте формулы или VBA.
Если после применения формул в ячейках отображаются даты вместо чисел (например, 1,234 превращается в 1-фев), измените формат ячейки на Текстовый или Общий.
FAQ: Ответы на частые вопросы
Можно ли разделить запятыми числа в Google Таблицах?
Да, в Google Sheets используйте те же формулы, но с английскими названиями функций:
- 📌
=TEXT(A1; "#,##0")→=TEXT(A1; "#,##0")(аналогично). - 📌
=TEXTJOIN→=JOINили=ARRAYFORMULA(TEXTJOIN).
Для разделения каждой цифры: =ARRAYFORMULA(JOIN(",", SPLIT(A1; ""))).
Как убрать запятые между цифрами обратно?
Используйте формулу =ПОДСТАВИТЬ(A1; ","; "") или =ЗНАЧЕН(ПОДСТАВИТЬ(A1; ","; "")), если нужно вернуть числовой формат. Для VBA:
Sub RemoveCommas()
Dim rng As Range
For Each rng In Selection
rng.Value = Replace(rng.Value, ",", "")
Next rng
End Sub
Почему после применения формулы результат не обновляется?
Вероятные причины:
- 🔄 Включён
Автоматический пересчёт? Проверьте:Формулы → Параметры вычислений → Автоматически. - 🔄 Формула введена как текст? Убедитесь, что ячейка не отформатирована как текст.
- 🔄 Используете
TEXTJOINв Excel 2016? Эта функция появилась только в 2019 году.
Как разделить запятыми числа в столбце с датами?
Excel хранит даты как числа (количество дней с 1900 года). Чтобы разделить цифры в дате (например, 01.12.2023 → 0,1,1,2,2,0,2,3):
- Преобразуйте дату в текст:
=ТЕКСТ(A1; "ддммгггг"). - Примените формулу для разделения:
=TEXTJOIN(",", 1, MID(TEXT(A1; "ddmmyyyy"); ROW(1:8); 1)).
Можно ли разделить запятыми числа в Excel Online?
В веб-версии Excel доступны все текстовые функции, кроме TEXTJOIN (замените на =СЦЕПИТЬ с ПОДСТАВИТЬ). Макросы VBA и Power Query в Excel Online не работают.