Разбиваем строку на два столбца в Excel: от простого к продвинутому

Почему разбиение строк на столбцы — ключевая задача в Excel

Вы когда-нибудь сталкивались с ситуацией, когда в одной ячейке Excel хранится сразу два значения — например, фамилия и имя через пробел, артикул и название товара через тире, или дата с временем через запятую? Такие данные неудобно анализировать: нельзя отсортировать по второму слову, построить сводную таблицу или применить фильтр к отдельной части текста. Разбиение строк на столбцы решает эту проблему за считанные минуты.

В этой статье мы разберём 5 способов разделения текста — от встроенных инструментов Excel до автоматизации через Power Query и VBA. Вы узнаете, как справиться с задачей даже если разделитель нестандартный (например, точка с запятой или несколько пробелов подряд), а также как избежать типичных ошибок при работе с большими таблицами. Все методы протестированы на Excel 2010–2023 и Office 365, поэтому вы сможете применить их независимо от версии программы.

Прежде чем перейти к инструкциям, ответьте на один вопрос — это поможет нам сделать статью ещё полезнее:

📊 Как часто вам приходится разбивать строки на столбцы в Excel?
Ежедневно
Несколько раз в неделю
Редко, но методы забываю
Первый раз столкнулся

Способ 1: Встроенный инструмент «Текст по столбцам»

Самый простой и быстрый метод — использовать функцию Текст по столбцам (Text to Columns в английской версии). Она подходит для 90% задач, когда в строке есть чёткий разделитель: запятая, точка с запятой, пробел или символ табуляции. Рассмотрим пошаговую инструкцию на примере списка ФИО через пробел.

Допустим, у вас в столбце A данные вида «Иванов Петр Сидорович», и нужно разделить их на три столбца: фамилию, имя и отчество.

  1. Выделите диапазон ячеек, который хотите разбить (например, A2:A100).

  2. Перейдите на вкладку ДанныеТекст по столбцам.

  3. В первом окне мастера выберите С разделителями (если текст разделен пробелами, запятыми и т.п.) или Фиксированная ширина (если символы выровнены по столбцам, как в старых базах данных). Для нашего примера — С разделителями.

  4. На втором шаге укажите разделитель. Для ФИО это Пробел. Снимите галочку с Табуляция, если она не нужна. В поле предварительного просмотра вы увидите, как Excel разобьёт текст.

  5. На третьем шаге выберите формат данных для новых столбцов (обычно Общий или Текстовый) и укажите, куда вставить результат (по умолчанию — справа от исходных данных).

  6. Нажмите Готово.

Готово! Теперь фамилия, имя и отчество разнесены по отдельным столбцам. Если в исходных данных были лишние пробелы (например, «Иванов Петр»), используйте функцию =СЖПРОБЕЛЫ(), чтобы их убрать до разбиения.

Удалите лишние пробелы функцией =СЖПРОБЕЛЫ()

Проверьте, что разделитель одинаковый во всех строках

Сохраните резервную копию файла

Убедитесь, что справа от исходных данных достаточно пустых столбцов-->

⚠️ Внимание: Если в исходных данных встречаются пустые ячейки, Excel пропустит их при разбиении. Чтобы избежать сдвига данных, заполните пустоты временным символом (например, #) и удалите его после операции.

Способ 2: Формулы для гибкого разделения

Встроенный инструмент «Текст по столбцам» не всегда подходит. Например, если разделитель нестандартный (как в строке «Артикул: 12345; Название: Монитор»), или нужно вытащить только вторую часть текста после третьего символа. В таких случаях помогут формулы.

Рассмотрим основные функции для работы с текстом:

Функция Пример Результат Когда использовать
=ЛЕВСИМВ(текст; количество) =ЛЕВСИМВ("А123Б"; 2) А1 Извлечь начало строки
=ПРАВСИМВ(текст; количество) =ПРАВСИМВ("А123Б"; 1) Б Извлечь конец строки
=ПСТР(текст; начало; длина) =ПСТР("А123Б"; 3; 2) 23 Извлечь фрагмент по позициям
=НАЙТИ(искомый_текст; текст; [начало]) =НАЙТИ(";";"А123;Б456") 5 Найти позицию разделителя
=ПОДСТАВИТЬ(текст; старый_текст; новый_текст) =ПОДСТАВИТЬ("А,Б";",";"|") А|Б Заменить разделитель

Пример разделения строки по символу «;»:

=ЛЕВСИМВ(A2; НАЙТИ(";"; A2)-1)  // Первая часть (до ";")

=ПРАВСИМВ(A2; ДЛСТР(A2)-НАЙТИ(";"; A2)) // Вторая часть (после ";")

Если разделитель может отсутствовать, добавьте проверку на ошибку:

=ЕСЛИОШИБКА(ЛЕВСИМВ(A2; НАЙТИ(";"; A2)-1); A2)
=ТРАНСП(РАЗБТЕКСТ(" ";A2))

(в новых версиях Excel).-->

Способ 3: Power Query для сложных задач

Если вам нужно разбить тысячи строк с нестандартными разделителями (например, JSON-данные или лог-файлы), вручную это сделать почти невозможно. Здесь на помощь придёт Power Query — инструмент для преобразования данных, встроенный в Excel 2016 и новее.

Допустим, у вас есть столбец с данными вида «City: Moscow; Population: 12M; Area: 2561 km²», и нужно выделить город, население и площадь в отдельные столбцы. Вот как это сделать:

  1. Выделите исходный диапазон и перейдите на вкладку ДанныеИз таблицы/диапазона (в старых версиях: Получить данныеИз таблицы/диапазона).

  2. В открывшемся окне Power Query выделите столбец с данными, затем на вкладке Преобразовать выберите Разделить столбецПо разделителю.

  3. Укажите разделитель (в нашем случае ;) и настройте параметры разбиения. Для ключ-значение (как в примере) также пригодится опция Разделить на строки с последующим Повернуть столбцы.

  4. После преобразований нажмите Закрыть и загрузить, чтобы вернуть данные в Excel.

Power Query сохраняет все шаги преобразования, поэтому при обновлении исходных данных достаточно кликнуть Обновить все на вкладке Данные — и разбиение произойдёт автоматически.

Как разбить JSON в Power Query?

1. Загрузите JSON-файл через Данные → Получить данные → Из файла → Из JSON.

2. В редакторе Power Query нажмите на иконку в таблицу рядом с столбцом данных.

3. Выберите нужные поля и разверните их с помощью кнопки в заголовке столбца.

4. При необходимости разделите вложенные объекты повторно.

⚠️ Внимание: Если в исходных данных есть многоуровневые вложения (например, JSON с массивами внутри объектов), используйте параметр Развернуть в новые строки для каждого уровня. Иначе часть данных может потеряться.

Способ 4: Макросы для автоматизации

Если вам приходится разбивать строки по одному и тому же шаблону ежедневно, имеет смысл записать макрос. Например, для разделения строки «Склад1-ТоварА-100шт» на склад, название и количество.

Вот пример кода на VBA, который разбивает текст по символу - и вставляет результаты в соседние столбцы:

Sub SplitTextByDelimiter()

Dim rng As Range

Dim cell As Range

Dim arr() As String

Dim delimiter As String

delimiter = "-" ' Укажите свой разделитель

Set rng = Selection ' Выделите диапазон перед запуском макроса

For Each cell In rng

If Not IsEmpty(cell) Then

arr = Split(cell.Value, delimiter)

cell.Offset(0, 1).Resize(1, UBound(arr) + 1).Value = arr

End If

Next cell

End Sub

Чтобы использовать этот макрос:

  1. Нажмите ALT+F11, чтобы открыть редактор VBA.

  2. Вставьте код в новый модуль (Insert → Module).

  3. Вернитесь в Excel, выделите диапазон с данными и запустите макрос через ALT+F8.

Для продвинутых пользователей: если разделитель может отсутствовать или данные имеют сложную структуру, добавьте в код проверку на ошибки с помощью On Error Resume Next.

Способ 5: Регулярные выражения (для опытных)

Если ваши данные имеют сложную структуру (например, «Email: user@example.com; Phone: +7(999)123-45-67»), и разделители непостоянны, на помощь придут регулярные выражения (regex). В Excel их можно использовать через Power Query или VBA.

Пример задачи: из строки «Order #12345 from 2023-10-15» нужно извлечь номер заказа и дату. Решение через Power Query:

  1. Загрузите данные в Power Query (как в Способе 3).

  2. Выделите столбец, перейдите на вкладку ПреобразоватьИзвлечьТекст после разделителя.

  3. В поле Разделитель введите regex-шаблон: Order #(\d+) для номера заказа или from (\d{4}-\d{2}-\d{2}) для даты.

  4. Нажмите ОК и повторите шаг для второго значения.

Для VBA потребуется подключить библиотеку Microsoft VBScript Regular Expressions. Пример кода:

Function ExtractWithRegex(text As String, pattern As String) As String

Dim regex As Object

Set regex = CreateObject("VBScript.RegExp")

regex.Pattern = pattern

regex.Global = True

If regex.Test(text) Then

ExtractWithRegex = regex.Execute(text)(0).SubMatches(0)

Else

ExtractWithRegex = "Not found"

End If

End Function

Теперь в Excel можно использовать формулу:

=ExtractWithRegex(A2; "Order #(\d+)")
⚠️ Внимание: Регулярные выражения в Excel работают только через VBA или Power Query. В стандартных функциях (как =РАЗБТЕКСТ()) их использовать нельзя.

Типичные ошибки и как их избежать

Даже опытные пользователи Excel иногда сталкиваются с проблемами при разбиении строк. Вот TOP-5 ошибок и способы их решения:

  • 🔹 Данные сдвинулись после разбиения. Причина: в исходном столбце были пустые ячейки. Решение: заполните их временным значением (например, N/A) перед операцией.
  • 🔹 Текст разбился не по тому символу. Причина: в данных есть невидимые символы (например, неразрывный пробел). Решение: используйте функцию =ПЕЧСИМВ(A2), чтобы их обнаружить.
  • 🔹 Числа превратились в даты. Причина: Excel автоматически преобразует формат. Решение: перед разбиением отформатируйте столбец как Текстовый.
  • 🔹 Формулы возвращают ошибку #ЗНАЧ!. Причина: разделитель отсутствует в строке. Решение: добавьте проверку =ЕСЛИОШИБКА().
  • 🔹 Power Query «завис» на большом файле. Причина: слишком много шагов преобразования. Решение: разбивайте данные на части или оптимизируйте запросы.

Если вы работаете с многоязычными данными, учитывайте, что разделители могут отличаться. Например, в английских CSV-файлах используется запятая, а в русских — точка с запятой. Всегда проверяйте формат исходного файла!

FAQ: Ответы на частые вопросы

Можно ли разбить строку на столбцы без потери исходных данных?

Да. Все методы (кроме Текст по столбцам в режиме Заменить) сохраняют исходный столбец. Рекомендуем дублировать данные на другой лист перед началом работы.

Как разбить текст, если разделитель — это несколько пробелов подряд?

Используйте функцию =СЖПРОБЕЛЫ(), чтобы заменить несколько пробелов на один, а затем примените Текст по столбцам с разделителем Пробел.

Почему после разбиения в ячейках появляются символы ####?

Это означает, что ширина столбца недостаточна для отображения данных. Растяните столбец или измените формат ячеек на Текстовый.

Как автоматизировать разбиение для новых данных?

Для статических данных подойдёт Power Query (обновляется по кнопке). Для динамических — VBA-макрос, привязанный к событию (например, при открытии файла).

Можно ли разбить строку на столбцы в Google Sheets?

Да, в Google Таблицах есть аналогичный инструмент: Данные → Разделить текст на столбцы. Также работают функции =SPLIT(), =LEFT(), =RIGHT().