Почему разделение столбцов в Excel — частая задача
Работа с данными в Microsoft Excel часто требует преобразования исходных таблиц в более удобный формат. Одна из самых распространённых проблем — когда полезная информация «склеена» в одной ячейке. Например, в столбце могут храниться ФИО через пробел, адреса с индексом или даты с временем. Разделение такого столбца на два (или больше) позволяет:
✅ Упростить сортировку и фильтрацию данных (например, отсортировать сотрудников по фамилии, а не по полному имени).
✅ Использовать отдельные части данных в формулах (например, извлечь только год из ячейки с полной датой).
✅ Подготовить данные для сводных таблиц или внешних систем (1С, CRM), где требуется строгая структура.
В этой статье мы разберём 5 способов разделения столбцов — от простейших до продвинутых, — а также типичные ошибки и нюансы для разных версий Excel (включая Excel 365 и Excel 2019). Если вы работаете с большими массивами данных, обратите внимание на раздел про Power Query — он сэкономит часы ручной работы.
Способ 1: Разделение по символу-разделителю (самый быстрый метод)
Если данные в ячейках имеют фиксированный разделитель (запятая, точка с запятой, пробел, тире и т.д.), воспользуйтесь встроенной функцией Текст по столбцам. Этот метод работает во всех версиях Excel и подходит для 90% задач.
Примеры данных, которые можно разделить таким способом:
- 📌 ФИО:
Иванов Иван Петрович→ разделитель пробел. - 📌 Адреса:
123456, Москва, ул. Ленина, 10→ разделитель запятая. - 📌 Телефоны:
8-912-345-67-89→ разделитель тире.
Пошаговая инструкция:
- Выделите столбец с данными (например, столбец
A). - Перейдите на вкладку
Данные→Текст по столбцам. - В первом окне мастера выберите
С разделителями→Далее. - Укажите разделитель (например, пробел или запятую) и снимите галочку с
Подряд идущие разделители считать за один, если нужно сохранить пустые ячейки. - Нажмите
Готово— данные разделятся на соседние столбцы.
☑️ Подготовка к разделению по символу
Ограничения метода:
- ❌ Не работает, если разделитель непостоянный (например, в одной ячейке пробел, в другой — запятая).
- ❌ Не подходит для фиксированной ширины (например, разделить первые 3 символа от остальных).
Что делать, если разделитель — несколько символов подряд?
Если разделитель состоит из нескольких символов (например, "; " или " - "), сначала замените его на один символ через Ctrl+H (замена), а затем используйте Текст по столбцам. Например, замените " - " на |, а затем разделите по |.
Способ 2: Разделение по фиксированной ширине (для структурированных данных)
Этот метод полезен, когда данные имеют строгую структуру по символам. Например:
- 📌 Артикулы:
ABC123-45678→ нужно разделить наABC123и45678. - 📌 Номера документов:
7701123456→ первые 4 цифры (код региона), остальные — номер. - 📌 Дата+время:
202605151430→20260515и1430.
Как разделить:
- Выделите столбец с данными.
- Перейдите в
Данные→Текст по столбцам. - Выберите
Фиксированная ширина→Далее. - В окне предварительного просмотра кликните мышью в том месте, где нужно разделить данные (появится вертикальная линия). Добавьте столько линий, сколько частей нужно получить.
- Нажмите
Готово.
Важно: если в данных есть пробелы, Excel может автоматически создать дополнительные линии раздела. Удалите их вручную, перетащив линию влево или вправо.
| Исходные данные | Разделитель | Результат (Столбец 1) | Результат (Столбец 2) |
|---|---|---|---|
ABC123-45678 |
6 символов | ABC123 |
45678 |
7701123456 |
4 символа | 7701 |
123456 |
ИВАНОВИВАН01011990 |
8 и 10 символов | ИВАНОВИВ |
АН01011990 |
Способ 3: Формулы для гибкого разделения (LEN, LEFT, RIGHT, MID, FIND)
Когда стандартные инструменты не подходят (например, разделитель непостоянный или нужно извлечь часть данных по сложному правилу), на помощь приходят формулы. Ниже — самые полезные комбинации.
1. Разделение по первому пробелу (извлечение фамилии из ФИО)
Формула для извлечения текста до первого пробела:
=ЛЕВСИМВ(A1;НАЙТИ(" ";A1;1)-1)
Формула для извлечения текста после первого пробела:
=ПРАВСИМВ(A1;ДЛСТР(A1)-НАЙТИ(" ";A1;1))
2. Разделение по последнему пробелу (извлечение имени и отчества)
Формула для извлечения текста после последнего пробела:
=ПРАВСИМВ(A1;ДЛСТР(A1)-ПОИСК(" ";A1;ПОИСК(" ";A1;ПОИСК(" ";A1)+1)+1))
Для извлечения промежуточной части (например, имени из ФИО) используйте СЖПРОБЕЛЫ + ПСТР:
=СЖПРОБЕЛЫ(ПСТР(СЖПРОБЕЛЫ(A1);НАЙТИ(" ";A1)+1;НАЙТИ(" ";A1;НАЙТИ(" ";A1)+1)-НАЙТИ(" ";A1)-1))
3. Разделение по любому символу (универсальный метод)
Если разделитель — не пробел, а например "/" или "-", замените " " в формулах на нужный символ. Например, для разделения Иванов/Иван/Иванович:
=ЛЕВСИМВ(A1;НАЙТИ("/";A1;1)-1)
=ПСТР(A1;НАЙТИ("/";A1;1)+1;НАЙТИ("/";A1;НАЙТИ("/";A1;1)+1)-НАЙТИ("/";A1;1)-1)
Способ 4: Power Query — автоматическое разделение для больших таблиц
Если вам нужно разделить тысячи строк или делать это регулярно, Power Query (доступен в Excel 2016+ и Excel 365) станет вашим спасением. Этот инструмент позволяет:
- 🔄 Автоматизировать процесс (однажды настроив, можно обновлять данные одним кликом).
- 📊 Обрабатывать данные из нескольких источников (например, объединить и разделить столбцы из разных файлов).
- 🔍 Исправлять ошибки на лету (например, убирать лишние пробелы или заменять разделители).
Пошаговая инструкция:
- Выделите таблицу с данными (или перейдите на вкладку
Данные→Из таблицы/диапазона). - В открывшемся окне Power Query выделите столбец, который нужно разделить.
- На вкладке
Преобразованиевыберите: - 🔹
Разделить столбец → По разделителю(если разделитель известен). - 🔹
Разделить столбец → По количеству символов(если нужна фиксированная ширина).
Закрыть и загрузить — данные обновятся в новом листе.Преимущества Power Query:
- ✅ Независимость от формул — данные обновляются автоматически при изменении источника.
- ✅ Поддержка сложных правил (например, разделение по нескольким разделителям или с учётом регистра).
- ✅ Возможность отката — все шаги фиксируются, их можно редактировать.
Способ 5: Макросы VBA для продвинутых пользователей
Если вам нужно разделить столбцы по сложному алгоритму (например, с учётом нескольких условий или внешних данных), напишите макрос на VBA. Этот метод требует базовых знаний программирования, но даёт максимальную гибкость.
Пример макроса для разделения столбца A по первому пробелу:
Sub SplitColumnBySpace()
Dim rng As Range
Dim cell As Range
Dim lastRow As Long
Dim splitData() As String
' Определяем последний заполненный ряд в столбце A
lastRow = Cells(Rows.Count, "A").End(xlUp).Row
Set rng = Range("A1:A" & lastRow)
' Добавляем два новых столбца справа
rng.Offset(0, 1).Resize(, 2).Insert Shift:=xlToRight
' Разделяем данные
For Each cell In rng
If cell.Value <> "" Then
splitData = Split(cell.Value, " ")
cell.Offset(0, 1).Value = splitData(0) ' Первая часть
If UBound(splitData) > 0 Then
cell.Offset(0, 2).Value = Mid(cell.Value, Len(splitData(0)) + 2) ' Остаток
End If
End If
Next cell
End Sub
Как использовать макрос:
- Нажмите
Alt+F11, чтобы открыть редактор VBA. - Вставьте код в новый модуль (
Insert → Module). - Закройте редактор и запустите макрос через
Alt+F8(выберитеSplitColumnBySpace→Выполнить).
⚠️ Внимание: Перед запуском макроса сохраните файл в формате.xlsm(с поддержкой макросов), иначе код не сработает. Также отключите защиту от макросов в настройках Excel (Файл → Параметры → Центр управления безопасностью → Параметры центра управления безопасностью → Настройки макросов → Включить все макросы).
Типичные ошибки и как их избежать
Даже опытные пользователи Excel сталкиваются с проблемами при разделении столбцов. Вот самые распространённые ошибки и способы их решения:
| Ошибка | Причина | Решение |
|---|---|---|
| Данные не разделяются | Неверно указан разделитель или формат ячеек Текст. |
Проверьте разделитель вручную (например, может быть невидимый символ CHAR(160) — неразрывный пробел). Используйте =КОДСИМВ(СИМВОЛ(1;A1)) для проверки. |
| Лишние пустые столбцы | Включена опция Подряд идущие разделители считать за один. |
Снимите галочку в мастере Текст по столбцам. |
| Дата превращается в число | Excel автоматически преобразует даты в формат ДД.ММ.ГГГГ. |
Перед разделением установите формат ячеек как Текст (Ctrl+1 → Текстовый). |
Формулы возвращают #ЗНАЧ! |
В данных нет разделителя (например, пробела). | Добавьте проверку на ошибки: =ЕСЛИОШИБКА(ЛЕВСИМВ(A1;НАЙТИ(" ";A1)-1);A1). |
⚠️ Внимание: Если вы разделяете столбец с объединёнными ячейками, сначала отмените объединение (Главная → Объединить и центрировать). В противном случае данные в объединённых ячейках будут утрачены!
FAQ: Ответы на частые вопросы
Можно ли разделить столбец на два без потери исходных данных?
Да. Все методы, кроме Текст по столбцам в режиме Заменить содержимое, сохраняют исходные данные. Рекомендуем:
- 📌 Сначала скопировать столбец на новый лист (
Ctrl+C → Ctrl+Alt+V → Значения). - 📌 Использовать формулы — они не изменяют исходные ячейки.
- 📌 В Power Query данные обрабатываются в отдельном буфере.
Как разделить ячейку на две, если разделитель — запятая, но в тексте тоже есть запятые?
Используйте формулы с учётом контекста. Например, если адрес имеет вид город, улица, дом, а в названии улицы тоже есть запятая (Москва, улица Ленина, дом 1, корпус 2), примените:
=ЛЕВСИМВ(A1;НАЙТИ(", ";A1;НАЙТИ(", ";A1)+1)-1)
=ПРАВСИМВ(A1;ДЛСТР(A1)-НАЙТИ(", ";A1;НАЙТИ(", ";A1)+1))
Или замените «внутренние» запятые на другой символ перед разделением.
Почему после разделения столбца числа отображаются как даты?
Excel автоматически преобразует числа в формат даты, если они похожи на дату (например, 01.05.2026 или 1/5/2026). Чтобы избежать этого:
- Перед разделением установите формат ячеек как
Текст. - Используйте
'перед числом (например,'01.05.2026), чтобы принудительно сделать его текстом. - В Power Query явно укажите тип данных
Текстдля результирующих столбцов.
Как разделить столбец в Google Sheets?
В Google Таблицах процесс аналогичен Excel:
- Выделите столбец.
- Перейдите в
Данные → Разделить текст на столбцы. - Выберите разделитель или укажите фиксированную ширину.
Отличия от Excel:
- 📌 Нет Power Query, но есть
=SPLIT()для формул. - 📌 Макросы пишутся на Google Apps Script (аналог VBA).
Можно ли разделить столбец по регулярному выражению?
В стандартном Excel — нет. Но есть обходные пути:
- 📌 В Power Query используйте
Text.SelectилиText.BeforeDelimiterс кастомными функциями. - 📌 В Excel 365 с функцией
=ТЕКСТРАЗД()(англ.TEXTSPLIT) можно указать массив разделителей. - 📌 Для сложных регулярных выражений используйте VBA с библиотекой
VBScript.RegExp.
Пример кода для VBA:
Function SplitByRegex(inputText As String, pattern As String) As String()
Dim regex As Object
Set regex = CreateObject("VBScript.RegExp")
regex.pattern = pattern
SplitByRegex = regex.Split(inputText)
End Function