Как объединить текст из двух ячеек в Excel: все способы от простого к сложному

Объединение текста в Excel: когда это нужно и какие подводные камни ждут новичков

Работа с текстовыми данными в Microsoft Excel часто требует объединения информации из нескольких ячеек в одну. Это может понадобиться при формировании отчётов, создании сводных таблиц или подготовке данных для экспорта в другие системы. Например, когда фамилия и имя хранятся в разных колонках, а нужно получить полное ФИО в одной ячейке.

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

Способ 1: Функция СЦЕПИТЬ (CONCATENATE) — классика жанра

Функция СЦЕПИТЬ (или CONCATENATE в английской версии) — самый известный инструмент для объединения текста. Она работает во всех версиях Excel, включая Excel 2003, и поддерживает до 255 аргументов. Синтаксис простой:

=СЦЕПИТЬ(текст1; [текст2]; ...)

Где текст1, текст2 и так далее — это либо ссылки на ячейки, либо текстовые строки в кавычках. Например, чтобы объединить содержимое ячеек A1 ("Иванов") и B1 ("Иван"), используйте:

=СЦЕПИТЬ(A1; " "; B1)

Обратите внимание на пробел в кавычках (" ") — без него фамилия и имя "склеятся" без разделителя. Этот способ надёжен, но имеет ограничение: если хотя бы одна из ячеек пустая, результат тоже будет пустым. Чтобы избежать этого, используйте функцию ЕСЛИ для проверки:

=ЕСЛИ(A1=""; B1; ЕСЛИ(B1=""; A1; СЦЕПИТЬ(A1; " "; B1)))

Способ 2: Оператор & — быстрее и проще

Для тех, кто предпочитает лаконичные решения, в Excel есть оператор амперсанд (&). Он выполняет ту же задачу, что и СЦЕПИТЬ, но без ограничения на количество аргументов и с более компактным синтаксисом:

=A1 & " " & B1

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

  • 🔹 Быстрота набора — не нужно вспоминать название функции.
  • 🔹 Гибкость — можно легко добавлять текстовые разделители (запятые, тире, скобки).
  • 🔹 Совместимость — работает во всех версиях Excel, включая Excel Online.

Однако есть нюанс: если в одной из ячеек содержится число, Excel может автоматически преобразовать его в дату. Например, при объединении A1="Заказ" и B1=1/12 результат будет "Заказ12-янв" вместо ожидаемого "Заказ 1/12". Чтобы избежать этого, используйте функцию ТЕКСТ:

=A1 & " " & ТЕКСТ(B1; "0")
📊 Какой способ объединения текста вы используете чаще?
Функция СЦЕПИТЬ
Оператор &
Функция ОБЪЕДИНИТЬ (Excel 2019+)
VBA-скрипты
Другой

Способ 3: Функция ОБЪЕДИНИТЬ (TEXTJOIN) — современное решение для Excel 2019+

В Excel 2019 и более поздних версиях появилась функция ОБЪЕДИНИТЬ (TEXTJOIN), которая решает две ключевые проблемы предыдущих методов:

  1. Игнорирование пустых ячеек — если в диапазоне есть пустые ячейки, они не повлияют на результат.
  2. Указание разделителя — можно задать символ, который будет вставляться между всеми фрагментами текста.

Синтаксис функции:

=ОБЪЕДИНИТЬ(разделитель; игнорировать_пустые; текст1; [текст2]; ...)

Примеры использования:

  • 📌 Объединение с запятой:
    =ОБЪЕДИНИТЬ(", "; ИСТИНА; A1:B1)
  • 📌 Объединение с пробелом (игнорируя пустые ячейки):
    =ОБЪЕДИНИТЬ(" "; ИСТИНА; A1; B1; C1)
  • 📌 Объединение диапазона с переносом строки:
    =ОБЪЕДИНИТЬ(CHAR(10); ИСТИНА; A1:A5)

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

Что делать, если функции ОБЪЕДИНИТЬ нет в вашей версии Excel?

В Excel 2016 и более ранних версиях можно воспользоваться пользовательской функцией на VBA:


Function TEXTJOIN(delimiter As String, skip_empty As Boolean, ParamArray text_ranges() As Variant) As String

Dim result As String

Dim i As Long, j As Long

Dim current_text As String

For i = LBound(text_ranges) To UBound(text_ranges)

If TypeName(text_ranges(i)) = "Range" Then

For j = 1 To text_ranges(i).Count

current_text = CStr(text_ranges(i).Cells(j).Value)

If Not (skip_empty And current_text = "") Then

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

result = result & current_text

End If

Next j

Else

current_text = CStr(text_ranges(i))

If Not (skip_empty And current_text = "") Then

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

result = result & current_text

End If

End If

Next i

TEXTJOIN = result

End Function

Чтобы использовать её, нажмите Alt + F11, вставьте код в модуль и сохраните. После этого в Excel появится функция =TEXTJOIN.

Способ 4: Объединение с помощью Power Query — для больших данных

Если вам нужно объединить текст в тысячах строк или автоматизировать процесс для регулярных отчётов, Power Query (вкладка Данные → Получение данных) станет идеальным решением. Этот инструмент позволяет:

  • 🔧 Объединять столбцы с разными разделителями.
  • 🔧 Очищать данные перед объединением (удалять пробелы, исправлять регистр).
  • 🔧 Автоматически обновлять результаты при изменении исходных данных.

Пошаговая инструкция:

  1. Выделите исходный диапазон и нажмите Данные → Из таблицы/диапазона (или Get & Transform Data → From Table/Range в английской версии).
  2. В открывшемся редакторе Power Query выделите столбцы, которые нужно объединить.
  3. На вкладке Преобразование (Transform) выберите Объединить столбцы (Merge Columns).
  4. Укажите разделитель (пробел, запятая, тире и т. д.) и подтвердите действие.
  5. Нажмите Закрыть и загрузить (Close & Load), чтобы вернуть данные в Excel.

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

Удалить лишние пробелы (функция TRIM)|Проверить на пустые значения|Привести текст к единому регистру|Удалить дубликаты (если нужно)|Сохранить исходные данные в отдельном листе-->

Способ 5: VBA-скрипты — автоматизация для профессионалов

Если вам регулярно приходится объединять текст по сложным правилам (например, добавлять префиксы, обрабатывать ошибки или работать с динамическими диапазонами), макросы на VBA сэкономят часы времени. Ниже приведён пример скрипта, который объединяет текст из двух столбцов с учётом пустых ячеек и добавляет разделитель:


Sub CombineText()

Dim ws As Worksheet

Dim rng As Range

Dim cell As Range

Dim outputCol As Integer

Dim delimiter As String

' Настройки (измените под свои нужды)

Set ws = ActiveSheet

outputCol = 3 ' Столбец, куда будет записан результат

delimiter = " " ' Разделитель

' Определяем диапазон с данными (первые два столбца)

Set rng = ws.Range(ws.Cells(1, 1), ws.Cells(ws.Cells(ws.Rows.Count, 1).End(xlUp).Row, 2))

' Очищаем столбец вывода

ws.Columns(outputCol).ClearContents

' Объединяем текст

For Each cell In rng.Columns(1).Cells

If cell.Value <> "" Or cell.Offset(0, 1).Value <> "" Then

cell.Offset(0, outputCol - 1).Value = _

IIf(cell.Value = "", "", cell.Value) & _

IIf(cell.Value <> "" And cell.Offset(0, 1).Value <> "", delimiter, "") & _

IIf(cell.Offset(0, 1).Value = "", "", cell.Offset(0, 1).Value)

End If

Next cell

End Sub

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

  1. Нажмите Alt + F11, чтобы открыть редактор VBA.
  2. Вставьте код в новый модуль (Insert → Module).
  3. Измените параметры outputCol (столбец для результата) и delimiter (разделитель).
  4. Запустите макрос нажатием F5.

⚠️ Внимание: Перед запуском макроса сохраните файл в формате .xlsm (с поддержкой макросов), иначе скрипт не будет работать. Также убедитесь, что в настройках Excel разрешено выполнение макросов (Файл → Параметры → Центр управления безопасностью → Параметры центра управления безопасностью → Настройки макросов).

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

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

Ошибка Причина Решение
Результат отображается как дата (например, 12-май вместо 1/5) Excel автоматически преобразует числа в формате дд/мм или мм/дд в даты. Используйте функцию ТЕКСТ:
=A1 & " " & ТЕКСТ(B1; "0")
Пропускаются пробелы между словами Забыли добавить разделитель (" ") между ячейками. Всегда явно указывайте пробел:
=A1 & " " & B1
Функция возвращает #ИМЯ? Опечатка в названии функции или неверный синтаксис. Проверьте регистр (например, СЦЕПИТЬ, а не СЦЕПИТ) и разделители (точка с запятой ; в русской версии).
Объединённый текст обрезается (видно не полностью) Ширина столбца недостаточна или включён перенос текста. Расширьте столбец двойным кликом по границе заголовка или отключите перенос текста.
Функция ОБЪЕДИНИТЬ не работает У вас Excel 2016 или более ранняя версия. Используйте СЦЕПИТЬ, оператор & или VBA-аналог (см. спойлер выше).

⚠️ Внимание: Если вы работаете с данными, содержащими специальные символы (например, кавычки или амперсанды), используйте функцию ПОДСТАВИТЬ для их экранирования. Например, чтобы объединить текст с амперсандом, замените его на ""&"":

=ПОДСТАВИТЬ(A1; "&"; ""&"") & " " & B1

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

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

Нет, при объединении текста с помощью формул или оператора & в результирующей ячейке будет отображаться текущее значение исходных ячеек, а не сама формула. Если вам нужно сохранить формулы, используйте VBA-скрипт, который копирует формулы в новый столбец, а затем объединяет их текстовые представления.

Как объединить текст из нескольких строк в одну ячейку с переносом?

Используйте функцию СЦЕПИТЬ или ОБЪЕДИНИТЬ с символом CHAR(10) в качестве разделителя. Например:

=ОБЪЕДИНИТЬ(CHAR(10); ИСТИНА; A1:A5)

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

Почему после объединения в результатах появляются странные символы (например, □ или ?)?

Это связано с несовпадением кодировок. Такое происходит, если исходные данные были скопированы из внешних источников (веб-страниц, PDF) с другой кодировкой. Решение:

  1. Используйте функцию ПОДСТАВИТЬ для удаления непечатаемых символов:
    =ПОДСТАВИТЬ(ПОДСТАВИТЬ(A1; CHAR(160); " "); CHAR(13); "")
  2. Или очистите данные с помощью Power Query (Данные → Из текста/CSV).
Как объединить текст из ячеек, если они находятся на разных листах?

Укажите имя листа перед ссылкой на ячейку, используя восклицательный знак. Например, чтобы объединить A1 с листа Лист1 и B1 с листа Лист2:

=Лист1!A1 & " " & Лист2!B1

Если имя листа содержит пробелы, возьмите его в апострофы:

='Мой лист'!A1 & " " & B1

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

Да, если вы используете формулы (СЦЕПИТЬ, &, ОБЪЕДИНИТЬ) или Power Query. В первом случае текст обновляется автоматически при изменении исходных ячеек. Во втором — нужно нажать Обновить все на вкладке Данные. Если вы использовали VBA, запустите макрос повторно.