Разделение текста на две колонки в Microsoft Excel — задача, с которой сталкиваются при подготовке отчетов, каталогов или сравнительных таблиц. Если вы пытаетесь вручную переносить данные из одной ячейки в две соседних, но строки смещаются или форматирование слетает, проблема кроется в неправильном подходе. В 90% случаев достаточно использовать встроенные инструменты «Текст по столбцам» или формулы разбора, но есть и менее очевидные методы — например, настройка переноса текста с фиксированной шириной столбца или VBA-макросы для автоматического разбиения по разделителю.
Ключевой момент: способ разделения зависит от исходного формата данных. Если текст уже структурирован (например, разделен запятыми или табуляцией), подойдет мастер импорта. Для сплошного текста без разделителей потребуются формулы типа ЛЕВСИМВ/ПРАВСИМВ или регулярные выражения (в новых версиях Excel 365). Ниже разобраны все актуальные методы с учетом особенностей версий программы — от Excel 2010 до Excel 2026.
1. Разделение текста по разделителю (мастер «Текст по столбцам»)
Самый быстрый способ разбить текст на две колонки — использовать встроенный мастер «Текст по столбцам». Он работает, если в исходных данных есть четкий разделитель: запятая, точка с запятой, пробел или символ табуляции. Например, у вас в ячейке A1 запись вида "Иванов;Петров" или "Москва, Санкт-Петербург".
Алгоритм действий:
- Выделите диапазон ячеек с текстом, который нужно разбить.
- Перейдите на вкладку «Данные» → группа «Работа с данными» → кнопка «Текст по столбцам».
- В первом окне мастера выберите «С разделителями» (если текст структурирован) или «Фиксированная ширина» (если разбиение нужно по количеству символов).
- На следующем шаге укажите разделитель (например, запятую или пробел) и нажмите «Далее».
- Выберите формат данных для новых столбцов (обычно «Текстовый») и укажите место вставки результата (по умолчанию — справа от исходных данных).
⚠️ Внимание: Если в тексте несколько одинаковых разделителей подряд (например, "Москва,,Санкт-Петербург"), мастер воспримет пустые ячейки как отдельные колонки. Чтобы избежать этого, предварительно очистите данные с помощью функции СЖПРОБЕЛЫ:
=СЖПРОБЕЛЫ(A1)
2. Разделение текста по фиксированной ширине
Если текст не содержит явных разделителей, но требуется разбить его на две колонки по количеству символов (например, первые 10 символов в одну колонку, остальные — в другую), используйте метод фиксированной ширины в том же мастере «Текст по столбцам».
Пример: в ячейке A1 запись "1234567890АБВГД", и нужно первые 10 символов (цифры) поместить в колонку B, а буквы — в C. Порядок действий:
- Выделите ячейки с данными.
- Запустите мастер («Данные» → «Текст по столбцам») и выберите «Фиксированная ширина».
- В окне предварительного просмотра кликните мышью на линию разбиения (появится вертикальная черта) и перетащите ее на 10-й символ. При необходимости добавьте вторую линию разбиения.
- Нажмите «Далее», выберите формат данных («Текстовый» для букв, «Общий» для чисел) и завершите мастер.
| Исходный текст (A1) | Колонка 1 (B1) | Колонка 2 (C1) |
|---|---|---|
1234567890АБВГД |
1234567890 |
АБВГД |
Слово1Слово2 |
Слово1 |
Слово2 |
2026-05-20Отчет |
2026-05-20 |
Отчет |
⚠️ Внимание: Метод фиксированной ширины чувствителен к шрифту и масштабу ячеек. Если после разбиения данные в колонках не совпадают по длине, проверьте, что в настройках Excel («Файл» → «Параметры» → «Дополнительно») отключен параметр «Автоподбор ширины столбца».
3. Использование формул для разбиения текста
Когда мастер «Текст по столбцам» не подходит (например, нужно динамически обновлять данные или разбиение зависит от условий), используйте формулы. Основные функции для этой задачи:
- 🔹
ЛЕВСИМВ(текст; количество_символов)— извлекает символы с начала строки. - 🔹
ПРАВСИМВ(текст; количество_символов)— извлекает символы с конца строки. - 🔹
ПСТР(текст; начальная_позиция; количество_символов)— извлекает фрагмент из середины. - 🔹
НАЙТИ/ПОИСК(искомая_подстрока; текст)— находит позицию разделителя.
Пример: разделить текст "Иванов_Иван_Иванович" на фамилию, имя и отчество по символу подчеркивания. Формулы для ячеек B1 (фамилия), C1 (имя), D1 (отчество):
=ЛЕВСИМВ(A1;НАЙТИ("_";A1)-1) // Фамилия
=ПСТР(A1;НАЙТИ("_";A1)+1;НАЙТИ("_";A1;НАЙТИ("_";A1)+1)-НАЙТИ("_";A1)-1) // Имя
=ПРАВСИМВ(A1;ДЛСТР(A1)-НАЙТИ("_";A1;НАЙТИ("_";A1)+1)) // Отчество
1. Проверьте, что в тексте есть однозначный разделитель (запятая, пробел, тире и т.д.).
2. Убедитесь, что в соседних колонках нет данных — формулы перезапишут их.
3. Если разделитель повторяется (например, пробелы между словами), используйте ПОИСКБ для точного позиционирования.
4. Для динамического обновления преобразуйте формулы в значения («Копировать» → «Специальная вставка» → «Значения»).
-->
⚠️ Внимание: Формулы ЛЕВСИМВ/ПРАВСИМВ не учитывают многобайтовые символы (например, кириллицу в UTF-8). Для корректной работы с русским текстом используйте их аналоги с суффиксом Б: ЛЕВСИМВБ, ПРАВСИМВБ.
4. Разбиение текста с помощью Power Query
В Excel 2016 и новее для сложного разбиения текста удобно использовать Power Query (инструмент «Получить и преобразовать данные»). Этот метод подходит для больших массивов данных и позволяет сохранять шаги обработки для повторного использования.
Пошаговая инструкция:
- Выделите диапазон с данными и перейдите на вкладку «Данные» → «Из таблицы/диапазона» (в группе «Получить и преобразовать данные»).
- В открывшемся редакторе Power Query выделите столбец с текстом.
- На вкладке «Преобразовать» выберите «Разделить столбец» → «По разделителю» или «По количеству символов».
- Укажите параметры разбиения (например, разделитель — запятая, направление — «На столбцы»).
- Нажмите «Закрыть и загрузить», чтобы вернуть данные в Excel.
Преимущества Power Query:
- 🔹 Сохранение шагов обработки для повторного использования.
- 🔹 Возможность объединить разбиение с другими преобразованиями (фильтрация, сортировка).
- 🔹 Поддержка сложных разделителей (например, регулярные выражения в Excel 365).
5. Автоматизация разбиения с помощью VBA
Если вам регулярно приходится разбивать текст на колонки по одним и тем же правилам, имеет смысл создать VBA-макрос. Например, следующий код разобьет текст в выделенных ячейках по первому пробелу и запишет результаты в две соседние колонки:
Sub SplitTextIntoTwoColumns()
Dim rng As Range
Dim cell As Range
Dim splitText() As String
Dim i As Integer
Set rng = Selection
i = 1
For Each cell In rng
If Not IsEmpty(cell.Value) Then
splitText = Split(cell.Value, " ", 2) ' Разбиваем по первому пробелу
cell.Offset(0, i).Value = splitText(0)
If UBound(splitText) > 0 Then
cell.Offset(0, i + 1).Value = splitText(1)
End If
End If
Next cell
End Sub
Как использовать макрос:
- Нажмите Alt + F11, чтобы открыть редактор VBA.
- Вставьте код в новый модуль («Insert» → «Module»).
- Выделите ячейки с текстом в Excel и запустите макрос (Alt + F8 → выберите
SplitTextIntoTwoColumns→ «Выполнить»).
⚠️ Внимание: Перед запуском макроса сохраните файл в формате *.xlsm (с поддержкой макросов), иначе код не выполнится. Также убедитесь, что в «Параметрах Excel» → «Центр управления безопасностью» → «Параметры центра управления безопасностью» → «Параметры макросов» выбрано «Включить все макросы» (только для доверенных файлов!).
Как модифицировать макрос для других разделителей
Чтобы разбивать текст по запятой, замените в строке Split(cell.Value, " ", 2) пробел (" ") на запятую (","). Для разбиения по фиксированной длине используйте функции Left, Mid и Right вместо Split.
6. Разбиение текста с переносом строк (Alt+Enter)
Если текст в ячейке содержит переносы строк (введенные с помощью Alt + Enter), его можно разбить на две колонки с помощью формулы или макроса. Например, в ячейке A1 запись:
Строка1
Строка2
Чтобы разделить ее на две колонки, используйте формулу с функцией ПОИСК(СИМВОЛ(10);...), где СИМВОЛ(10) — это символ переноса строки:
=ЛЕВСИМВ(A1;ПОИСК(СИМВОЛ(10);A1)-1) // Первая строка
=ПРАВСИМВ(A1;ДЛСТР(A1)-ПОИСК(СИМВОЛ(10);A1)) // Вторая строка
⚠️ Внимание: Если в тексте несколько переносов строк, формула выше извлечет только первую и последнюю части. Для обработки многострочного текста используйте Power Query или VBA.
7. Особенности разбиения в разных версиях Excel
Функциональность инструментов для разбиения текста зависит от версии Excel. Ниже — ключевые отличия:
| Версия Excel | Мастер «Текст по столбцам» | Формулы | Power Query | VBA |
|---|---|---|---|---|
| Excel 2010–2013 | Поддерживается | Только ЛЕВСИМВ/ПРАВСИМВ |
Нет (только надстройка) | Поддерживается |
| Excel 2016–2019 | Поддерживается | Добавлены ЛЕВСИМВБ/ПРАВСИМВБ |
Встроенный Power Query | Поддерживается |
| Excel 365 / 2021 / 2026 | Поддерживается | Добавлены ТЕКСТПОСЛЕ/ТЕКСТДО |
Расширенный Power Query с регулярными выражениями | Поддерживается |
В Excel 365 появились новые функции для работы с текстом:
- 🔹
ТЕКСТДО(текст; разделитель; [вхождение]; [игнорировать_регистр])— извлекает часть текста до указанного разделителя. - 🔹
ТЕКСТПОСЛЕ(текст; разделитель; [вхождение]; [игнорировать_регистр])— извлекает часть текста после разделителя.
Пример использования ТЕКСТДО и ТЕКСТПОСЛЕ для разбиения "Иванов-Петров":
=ТЕКСТДО(A1;"-") // Результат: "Иванов"
=ТЕКСТПОСЛЕ(A1;"-") // Результат: "Петров"
8. Частые ошибки и их решения
При разбиении текста на колонки пользователи часто сталкиваются с следующими проблемами:
- 🔸 Данные не разбиваются: проверьте, что в мастере «Текст по столбцам» выбран правильный тип разделителя. Если разделитель — пробел, убедитесь, что он не является неразрывным (замените на обычный через «Найти и заменить», ищите
CHAR(160)). - 🔸 Числа преобразуются в даты: перед разбиением отформатируйте столбец как «Текстовый» или используйте апостроф перед числом (
'12345). - 🔸 Пустые ячейки после разбиения: это означает, что разделитель повторяется или отсутствует. Очистите данные функцией
СЖПРОБЕЛЫилиПОДСТАВИТЬ. - 🔸 Текст обрезается: если используете
ЛЕВСИМВ/ПРАВСИМВ, проверьте, что указано правильное количество символов (учитывайте пробелы!).
⚠️ Внимание: Если после разбиения в ячейках отображаются символы ######, это означает, что ширина столбца недостаточна для отображения данных. Растяните столбец двойным кликом по правой границе заголовка или используйте автоподбор ширины («Главная» → «Формат» → «Автоподбор ширины столбца»).
FAQ: Ответы на частые вопросы
Можно ли разбить текст на две колонки без потери исходных данных?
Да. Используйте один из следующих методов:
- Скопируйте исходные данные в другой лист перед разбиением.
- При использовании мастера «Текст по столбцам» укажите место вставки результата на другом листе.
- Для формул вставляйте результаты в новые столбцы, не затирая исходный.
Как разбить текст на две колонки по последнему пробелу?
Используйте комбинацию функций ПРАВСИМВ, ПОИСК и ПОДСТАВИТЬ:
=ЛЕВСИМВ(A1;ПОИСК("|";ПОДСТАВИТЬ(A1;" "; "|"; ЛЕН(A1)-ЛЕН(ПОДСТАВИТЬ(A1;" ";""))))-1)
=ПРАВСИМВ(A1;ЛЕН(A1)-ПОИСК("|";ПОДСТАВИТЬ(A1;" "; "|"; ЛЕН(A1)-ЛЕН(ПОДСТАВИТЬ(A1;" ";"")))))
Эта формула заменяет последний пробел на символ |, а затем разбивает текст относительно него.
Почему после разбиения числа отображаются как даты?
Excel автоматически преобразует числа в формат даты, если они соответствуют шаблону (например, 01.02 становится 1-фев). Чтобы избежать этого:
- Перед разбиением отформатируйте столбец как «Текстовый».
- Добавьте апостроф перед числом в исходных данных (
'01.02). - Используйте формулы вместо мастера «Текст по столбцам».
Как разбить текст на две колонки в Excel Online?
В веб-версии Excel (Excel Online) мастер «Текст по столбцам» отсутствует. Альтернативные способы:
- Используйте формулы (
ЛЕВСИМВ,ПРАВСИМВ). - Скопируйте данные в настольную версию Excel, выполните разбиение и вставьте обратно.
- Для простых случаев используйте «Найти и заменить» (Ctrl+H), заменяя разделитель на символ табуляции, затем вставляйте данные в новый лист — Excel автоматически разобьет их по столбцам.
Можно ли автоматизировать разбиение для новых данных?
Да. Для этого подходят:
- 🔹 Таблицы Excel с формулами (обновляются автоматически при добавлении строк).
- 🔹 Power Query — создайте запрос, который будет обновляться при изменении исходных данных.
- 🔹 VBA-макросы с триггером на событие
Worksheet_Change(автоматическое разбиение при редактировании листа).
Пример макроса для автоматического разбиения при изменении ячеек в столбце A:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim cell As Range
For Each cell In Target
If cell.Column = 1 Then ' Столбец A
cell.Offset(0, 1).Value = Split(cell.Value, " ")(0)
cell.Offset(0, 2).Value = Split(cell.Value, " ")(1)
End If
Next cell
End Sub