Объединение нескольких строк в одну в Excel: от простых формул до Power Query

Задача объединения данных из нескольких строк в одну ячейку — одна из самых частых в Microsoft Excel. Она возникает при подготовке отчётов, когда нужно сжать таблицу, или при импорте данных, где каждая запись разнесена по отдельным строкам. Например, у вас есть список товаров с характеристиками в разных строках, а требуется получить сводную строку с перечислением всех параметров через запятую.

Многие пользователи пытаются решить проблему вручную — копируют данные и склеивают их в текстовом редакторе. Это не только долго, но и чревато ошибками при большом объёме данных. К счастью, в Excel есть как минимум 5 способов автоматизировать процесс: от элементарных формул до продвинутых инструментов вроде Power Query. В этой статье разберём каждый метод с примерами, плюсами и минусами, а также дадим рекомендации, какой вариант выбрать в зависимости от задачи.

Если вы работаете с Excel 365 или Excel 2021, у вас есть доступ к новым динамическим функциям, которые упрощают задачу. Пользователям старых версий (Excel 2010–2016) придётся обходиться классическими формулами или макросами. Но независимо от версии программы, решение всегда найдётся — главное, правильно оценить объём данных и требуемый формат результата.

📊 Какую версию Excel вы используете?
Excel 365 (или 2021)
Excel 2019
Excel 2016
Excel 2010–2013
Другая (указать в комментариях)

1. Формула CONCATENATE (ТЕКСТОБЪЕДИНИТЬ) — простой способ для небольших диапазонов

Функция CONCATENATE (в русскоязычной версии — ТЕКСТОБЪЕДИНИТЬ) существует в Excel с первых версий и остаётся актуальной до сих пор. Она позволяет объединить содержимое нескольких ячеек в одну строку, добавляя между ними разделитель (запятую, пробел, тире и т.д.).

Основной синтаксис:

=CONCATENATE(текст1; [текст2]; ...)

или для русскоязычной версии:

=ТЕКСТОБЪЕДИНИТЬ(текст1; [текст2]; ...)

Пример: если в ячейках A1, A2 и A3 записаны слова «Красный», «Зелёный», «Синий», формула =CONCATENATE(A1; ", "; A2; ", "; A3) вернёт результат: «Красный, Зелёный, Синий».

  • Плюсы: работает во всех версиях Excel, не требует дополнительных надстроек.
  • Минусы: нужно вручную перечислять каждую ячейку; при изменении диапазона формулу придётся редактировать.
  • ⚠️ Ограничение: максимальное количество аргументов — 255 (в Excel 2016 и новее).

Для динамических диапазонов лучше использовать комбинацию CONCATENATE с TRANSPOSE (в русскоязычной версии — ТРАНСП), но это уже требует знания массивов. Подробнее об этом — в следующем разделе.

2. Функция TEXTJOIN — современное решение для динамических диапазонов

Начиная с Excel 2019 и Excel 365, пользователи получили доступ к функции TEXTJOIN (в русскоязычной версии — ОБЪЕДИНИТЬ). Она решает главную проблему CONCATENATE — необходимость перечислять каждую ячейку. Теперь можно указать целый диапазон, и функция автоматически объединит все непустые ячейки с заданным разделителем.

Синтаксис:

=TEXTJOIN(разделитель; игнорировать_пустые; текст1; [текст2]; ...)

где:

  • разделитель — символ (или текст), который будет вставлен между значениями (например, "," или " ");
  • игнорировать_пустые — логическое значение (ИСТИНА или ЛОЖЬ), определяющее, пропускать ли пустые ячейки;
  • текст1, текст2... — диапазоны или отдельные ячейки для объединения.

Пример: формула =TEXTJOIN(", "; ИСТИНА; A1:A10) объединит все непустые ячейки из диапазона A1:A10 через запятую с пробелом, пропуская пустые строки.

Формула Результат для диапазона A1:A3
(«Красный», «», «Синий»)
Примечание
=CONCATENATE(A1; ", "; A2; ", "; A3) Красный, , Синий Пустые ячейки отображаются как пробелы
=TEXTJOIN(", "; ИСТИНА; A1:A3) Красный, Синий Пустые ячейки игнорируются
=TEXTJOIN(", "; ЛОЖЬ; A1:A3) Красный,,Синий Пустые ячейки включаются как пустые элементы

Критическое отличие от CONCATENATE: TEXTJOIN обрабатывает диапазоны как массивы, поэтому её можно использовать в формулах с динамическими массивами (например, с функцией FILTER).

3. Объединение строк через Power Query — для больших таблиц

Когда данных много (тысячи строк), или они регулярно обновляются, формулы становятся неудобными. В таких случаях на помощь приходит Power Query — инструмент для преобразования и очистки данных, встроенный в Excel 2016 и новее (в Excel 2010–2013 доступен как надстройка Power Query for Excel).

Алгоритм действий:

  1. Выделите исходную таблицу и перейдите на вкладку Данные → Из таблицы/диапазона (или Get & Transform → Из таблицы в Excel 2016).
  2. В открывшемся редакторе Power Query выделите столбец, который нужно объединить.
  3. Перейдите на вкладку Преобразование → Объединить строки.
  4. Выберите разделитель (например, запятую или пробел) и подтвердите.
  5. Нажмите Готово, чтобы загрузить результат в новую таблицу.

Преимущества метода:

  • Производительность: обрабатывает миллионы строк без замедления.
  • 🔄 Автоматизация: запрос можно обновить одним кликом при изменении исходных данных.
  • 🛠️ Гибкость: позволяет предварительно отфильтровать или отсортировать данные перед объединением.

Пример: если у вас есть таблица с названиями товаров и их характеристиками в отдельных строках, Power Query сгруппирует данные по уникальному идентификатору (например, артикулу) и объединит характеристики в одну ячейку.

Как объединить строки с группировкой по ключевому столбцу?

1. В Power Query выделите столбец, по которому нужно сгруппировать данные (например, "Артикул").

2. Нажмите Группировать по на вкладке Преобразование.

3. В настройках группировки выберите операцию Объединить и укажите разделитель.

4. Выберите столбец, который нужно объединить (например, "Характеристики").

5. Готово — каждая группа будет представлена одной строкой с объединёнными данными.

4. Макрос VBA — для автоматизации повторяющихся задач

Если вам приходится объединять строки по одному и тому же шаблону регулярно, имеет смысл написать макрос на VBA. Это сэкономит время и исключит ошибки при ручном вводе формул.

Пример макроса, который объединяет все непустые ячейки выделенного диапазона в одну строку через запятую:

Sub ОбъединитьСтроки()

Dim rng As Range

Dim result As String

Dim cell As Range

' Проверяем, выделен ли диапазон

On Error Resume Next

Set rng = Selection

On Error GoTo 0

If rng Is Nothing Then

MsgBox "Выделите диапазон ячеек!", vbExclamation

Exit Sub

End If

' Объединяем непустые ячейки

result = ""

For Each cell In rng

If cell.Value <> "" Then

If result <> "" Then result = result & ", "

result = result & cell.Value

End If

Next cell

' Выводим результат в новую ячейку

rng.Parent.Cells(rng.Row, rng.Column + rng.Columns.Count + 1).Value = result

End Sub

Как использовать:

  1. Нажмите Alt + F11, чтобы открыть редактор VBA.
  2. Вставьте код в новый модуль (Insert → Module).
  3. Выделите диапазон с данными и запустите макрос (F5 или через Макросы → ОбъединитьСтроки).

Предупреждение: макросы работают только в файлах с расширением .xlsm (с поддержкой макросов). Если вы сохраните файл как .xlsx, код перестанет выполняться.

Выделите диапазон ячеек для объединения|Убедитесь, что в настройках Excel разрешено выполнение макросов (Файл → Параметры → Центр управления безопасностью → Параметры центра управления безопасностью → Включить все макросы)|Сохраните файл как .xlsm, а не .xlsx|Проверьте результат на тестовом диапазоне перед применением к реальным данным-->

5. Формула массива с TRANSPOSE — для горизонтального объединения

Если данные расположены в строках, но нужно объединить их в одну ячейку по столбцам (например, из диапазона A1:C1 в A1), поможет комбинация CONCATENATE с TRANSPOSE. Этот метод требует ввода формулы как формулы массива (в старых версиях Excel — с нажатием Ctrl+Shift+Enter).

Пример:

=CONCATENATE(TRANSPOSE(A1:C1)&", ")

После ввода нажмите Ctrl+Shift+EnterExcel 365 формула массива вводится автоматически).

Как это работает:

  • TRANSPOSE(A1:C1) преобразует горизонтальный диапазон в вертикальный массив {A1; B1; C1}.
  • &", " добавляет запятую и пробел к каждому элементу массива.
  • CONCATENATE объединяет все элементы в одну строку.

⚠️ Внимание: В Excel 365 вместо TRANSPOSE лучше использовать новую функцию TEXTJOIN, так как она проще в использовании и не требует ввода как формула массива.

6. Объединение с условием — фильтрация перед конкатенацией

Часто требуется объединить не все строки, а только те, которые соответствуют определённому условию. Например, из списка заказов нужно сгруппировать товары по клиенту и перечислить только те, которые были куплены в текущем месяце.

Для этого используйте комбинацию функций:

  • Для Excel 365: TEXTJOIN + FILTER.
  • Для Excel 2019 и старше: CONCATENATE + IF (как формула массива).

Пример для Excel 365:

=TEXTJOIN(", "; ИСТИНА; FILTER(B2:B10; A2:A10=D1; "Нет данных"))

где:

  • B2:B10 — диапазон с данными для объединения;
  • A2:A10 — диапазон с условием (например, название клиента);
  • D1 — ячейка с искомым значением (например, «Иванов»);
  • "Нет данных" — текст, который будет выведен, если ни одна ячейка не удовлетворяет условию.

Для старых версий Excel формула будет сложнее:

=CONCATENATE(IF(A2:A10=D1; B2:B10 & ", "; ""))
Не забудьте ввести её как формулу массива (Ctrl+Shift+Enter)!

Сравнение методов: какой выбрать?

Выбор способа зависит от версии Excel, объёма данных и задачи:

Метод Подходит для версий Макс. объём данных Гибкость Автоматизация
CONCATENATE Все До 255 ячеек Низкая Нет
TEXTJOIN 2019, 365 Тысячи строк Высокая Да (с динамическими массивами)
Power Query 2016+, 2010–2013 (надстройка) Миллионы строк Очень высокая Да
Макрос VBA Все Ограничено памятью Высокая Да
Формула массива Все Сотни строк Средняя Нет

Рекомендации:

  • 📌 Для разовых задач с небольшим объёмом данных — TEXTJOIN или CONCATENATE.
  • 📊 Для регулярной обработки больших таблицPower Query.
  • 🤖 Для полной автоматизации (например, еженедельных отчётов) — макрос VBA.

FAQ: Частые вопросы по объединению строк в Excel

Можно ли объединить строки без потери данных в исходных ячейках?

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

Почему TEXTJOIN не работает в моём Excel?

Функция TEXTJOIN появилась только в Excel 2019 и Excel 365. Если у вас более старая версия, используйте:

  • Комбинацию CONCATENATE + IF (как формулу массива).
  • Надстройку Morefunc, которая добавляет аналогичные функции.
  • Макрос VBA (см. раздел 4).
Как объединить строки с переносом на новую строку?

Используйте функцию CHAR(10) в качестве разделителя. Примеры:

  • Для TEXTJOIN: =TEXTJOIN(CHAR(10); ИСТИНА; A1:A5).
  • Для CONCATENATE: =CONCATENATE(A1; CHAR(10); A2; CHAR(10); A3).

Не забудьте включить перенос текста в ячейке (Главная → Перенос текста).

Можно ли объединить строки из разных листов?

Да, но синтаксис будет отличаться:

  • В формулах укажите имя листа: =TEXTJOIN(", "; ИСТИНА; Лист2!A1:A10).
  • В Power Query импортируйте данные с нескольких листов и объедините их в одном запросе.
  • В макросе VBA явно укажите лист: Worksheets("Лист2").Range("A1:A10").
Как объединить строки с сохранением форматирования?

К сожалению, стандартные функции Excel (TEXTJOIN, CONCATENATE) не сохраняют форматирование (цвет, шрифт, жирность). Решения:

  • 🎨 Используйте VBA: макрос может копировать форматирование из исходных ячеек в результирующую.
  • 📋 Объедините данные без форматирования, а затем вручную примените стили к результату.
  • 📊 Для сложных отчётов рассмотрите Power Point или специализированные инструменты вроде Power BI.