Как быстро поменять слова местами в Excel: от простых приёмов до автоматизации

Зачем менять слова местами в Excel и когда это нужно

Работа с текстовыми данными в Microsoft Excel часто требует нестандартных манипуляций. Одна из самых распространённых задач — перестановка слов в ячейках. Например, когда фамилия и имя записаны в формате "Иванов Петр", а нужно "Петр Иванов". Или когда адрес указан как "Москва, ул. Ленина, 15", а требуется "ул. Ленина, 15, Москва". Вручную редактировать сотни строк — нерационально, поэтому важно знать автоматизированные методы.

Эта задача актуальна для:

  • 📊 обработки баз данных (ФИО, адреса, названия товаров)
  • 📄 подготовки отчётов с унифицированным форматом
  • 🔄 импорта данных из других систем, где порядок слов не совпадает с требуемым
  • 📈 анализа текстовых полей (например, разбор составных наименований)

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

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

Способ 1: Ручная перестановка (для небольших объёмов)

Если нужно поменять слова местами в нескольких ячейках (до 20–30 строк), проще всего сделать это вручную. Этот метод не требует знания формул и подходит для пользователей любого уровня.

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

  1. Выделите ячейку с текстом (например, "Сидоров Анна").
  2. Дважды кликните по ней или нажмите F2, чтобы перейти в режим редактирования.
  3. Выделите первое слово (например, "Сидоров") и вырежьте его (Ctrl+X).
  4. Поставьте курсор после второго слова, вставьте вырезанное (Ctrl+V) и добавьте пробел.

⚠️ Внимание: При ручном редактировании легко допустить опечатку или пропустить ячейку. Всегда проверяйте результат с помощью фильтра или условного форматирования (выделите ячейки, где количество слов не соответствует ожидаемому).

Преимущества метода Недостатки метода
Не требует знания формул Трудоёмко при большом объёме данных
Подходит для нестандартных форматов Высокий риск ошибок
Можно сразу исправлять опечатки Невозможно автоматизировать

Способ 2: Функция ПОДСТАВИТЬ + ручное разделение

Если слова в ячейке разделены одним и тем же символом (например, запятой или точкой с запятой), можно использовать функцию ПОДСТАВИТЬ для временной замены разделителя на уникальный символ, а затем разделить текст по столбцам.

Пример для текста вида "Иванов;Пётр":

  1. В соседней ячейке введите формулу:
    =ПОДСТАВИТЬ(A1;";";"|")

    Это заменит точку с запятой на вертикальную черту.

  2. Скопируйте результаты и вставьте как значения (Ctrl+Shift+V → Значения).
  3. Выделите столбец с заменённым текстом и используйте Данные → Текст по столбцам, указав "|" как разделитель.
  4. Переставьте столбцы местами и объедините их обратно с помощью &" ".

Этот метод удобен, когда разделитель повторяется во всех ячейках и не встречается внутри слов. Например, он не подойдёт для адресов вида "Москва, ул. Ленина, д. 15", где запятые используются неоднократно.

☑️ Подготовка к разделению текста

Выполнено: 0 / 4

Способ 3: Формулы с ЛЕВСИМВ, ПРАВСИМВ и ПСТР

Для перестановки двух слов, разделённых пробелом, можно использовать комбинацию текстовых функций. Предположим, в ячейке A1 записано "Котов Василий", а нужно "Василий Котов".

Формула для новой ячейки:

=ПСТР(A1;НАЙТИ(" ";A1)+1;ДЛСТР(A1))&" "&ЛЕВСИМВ(A1;НАЙТИ(" ";A1)-1)

Разберём, как это работает:

  • 🔍 НАЙТИ(" ";A1) — находит позицию пробела (в примере это 6-й символ).
  • 📏 ЛЕВСИМВ(A1;НАЙТИ(" ";A1)-1) — извлекает первое слово ("Котов").
  • 📐 ПСТР(A1;НАЙТИ(" ";A1)+1;ДЛСТР(A1)) — извлекает второе слово ("Василий").
  • 🔗 &" " — объединяет слова в обратном порядке с пробелом.

⚠️ Внимание: Если в ячейке больше двух слов или пробелов несколько, формула вернёт некорректный результат. Для таких случаев потребуется более сложный подход (см. Способ 5).

Альтернативная формула для трёх слов

Если в ячейке три слова (например, "Иванов Петр Сидорович"), используйте:

=ПСТР(A1;НАЙТИ("~";ПОДСТАВИТЬ(A1;" ";"~";2))+1;ДЛСТР(A1))&" "&ПСТР(A1;НАЙТИ(" ";A1)+1;НАЙТИ("~";ПОДСТАВИТЬ(A1;" ";"~";2))-НАЙТИ(" ";A1)-1)&" "&ЛЕВСИМВ(A1;НАЙТИ(" ";A1)-1)

Эта формула переставит слова в порядке "Сидорович Петр Иванов".

Способ 4: Power Query (для больших таблиц)

Если вам нужно обработать тысячи строк или регулярно выполнять перестановку, оптимально использовать Power Query (доступен в Excel 2016 и новее). Этот инструмент позволяет автоматизировать процесс без формул.

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

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

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

Способ 5: Макрос VBA для сложных случаев

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

Sub SwapFirstTwoWords()

Dim rng As Range

Dim cell As Range

Dim parts() As String

Dim result As String

' Выбираем диапазон с данными

Set rng = Selection

For Each cell In rng

If Trim(cell.Value) <> "" Then

' Разбиваем текст на слова (учитываем несколько пробелов)

parts = Split(Application.WorksheetFunction.Trim(cell.Value), " ")

' Переставляем первые два слова

If UBound(parts) >= 1 Then

result = parts(1) & " " & parts(0)

' Добавляем остальные слова, если они есть

If UBound(parts) > 1 Then

result = result & " " & Join(ArraySlice(parts, 2, UBound(parts)), " ")

End If

cell.Value = result

End If

End If

Next cell

End Sub

' Вспомогательная функция для извлечения части массива

Function ArraySlice(arr() As String, start As Long, Optional end As Long) As String()

Dim i As Long, j As Long

ReDim result(0 To end - start) As String

For i = start To end

result(j) = arr(i)

j = j + 1

Next i

ArraySlice = result

End Function

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

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

⚠️ Внимание: Макрос изменит исходные данные без возможности отмены (Ctrl+Z не сработает). Всегда создавайте резервную копию перед запуском или тестируйте на копии данных.

Способ 6: Функция ТЕКСТПОСЛЕ и ТЕКСТДО (Excel 365)

В последних версиях Microsoft 365 появились удобные функции ТЕКСТПОСЛЕ и ТЕКСТДО, которые упрощают работу с текстовыми данными. Например, чтобы поменять местами фамилию и имя в формате "Иванов Петр", используйте:

=ТЕКСТПОСЛЕ(A1;" ")&" "&ТЕКСТДО(A1;" ")

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

  • 📌 Короткий и интуитивно понятный синтаксис.
  • 🔄 Работает даже если между словами несколько пробелов.
  • 🚀 Автоматически адаптируется к изменениям в исходных данных.

Ограничение: функции ТЕКСТПОСЛЕ/ТЕКСТДО доступны только в Excel 365 и Excel 2021. В более ранних версиях они вернут ошибку #ИМЯ?.

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

Если вы работаете с очень сложными форматами (например, "г. Москва, ул. Ленина, д.15, кв.42"), где нужно переставлять не только слова, но и группы символов, поможет надстройка для регулярных выражений (например, ABBYY FineReader или Kutools for Excel).

Пример шаблона для перестановки города и улицы:

  • 🔎 Искать: ^(г\.\s)([^,]+), (.+)
  • 📝 Заменить на: $3, $2$1

Этот метод требует знания синтаксиса регулярок, но позволяет обрабатывать любые нестандартные форматы текста, включая многоуровневые вложения. Например, с его помощью можно преобразовать "Иванов П.С." в "П.С. Иванов" или "2023-12-31" в "31.12.2023".

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

Можно ли поменять слова местами без потери форматирования ячейки?

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

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

Используйте комбинацию функций СЖПРОБЕЛЫ (убирает лишние пробелы) и ПОДСТАВИТЬ:

=ПОДСТАВИТЬ(СЖПРОБЕЛЫ(A1);" ";"|")

Затем разделите текст по символу "|" (как в Способе 2).

Почему формула возвращает ошибку #ЗНАЧ! при перестановке?

Ошибка возникает, если в ячейке нет пробела (например, текст слитный или пустой). Добавьте проверку с помощью ЕСЛИОШИБКА:

=ЕСЛИОШИБКА(ПСТР(A1;НАЙТИ(" ";A1)+1;ДЛСТР(A1))&" "&ЛЕВСИМВ(A1;НАЙТИ(" ";A1)-1);A1)

Это вернёт исходное значение, если перестановка невозможна.

Как автоматизировать перестановку при импорте данных из CSV?

Настройте Power Query на этапе импорта:

  1. При загрузке CSV выберите Преобразовать данные.
  2. Разделите столбец по пробелу (как в Способе 4).
  3. Переставьте столбцы и объедините их обратно.
  4. Сохраните запрос — при следующем импорте шаги применятся автоматически.

Есть ли разница между перестановкой в Excel и Google Таблицах?

Да, в Google Таблицах нет ТЕКСТПОСЛЕ/ТЕКСТДО, но есть функция REGEXEXTRACT для регулярных выражений. Аналог формулы из Способа 3:

=REGEXEXTRACT(A1;" (\S+)")&" "®EXEXTRACT(A1;"^(\S+)")

Также в Google Таблицах нет Power Query, но есть СЦЕПИТЬ вместо &.