Как переставить слова в ячейке Excel: от простых приёмов до сложных формул

Работаете с базой клиентов, где фамилия и имя записаны в обратном порядке? Или получили таблицу с адресами, где сначала идёт улица, а потом город? Перестановка слов в ячейках Excel — одна из самых частых задач при обработке текстовых данных. Без этого невозможно корректно отсортировать данные, построить сводные таблицы или просто привести информацию к единому формату.

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

Если вам нужно однократно исправить 10-20 ячеек, подойдёт ручной способ с функцией Текст по столбцам. Для обработки тысяч строк лучше использовать формулы вроде TEXTJOIN или TEXTSPLIT (доступны с Excel 2019 и новее). А для регулярных задач идеально подойдёт VBA-макрос, который мы тоже рассмотрим.

1. Ручной способ: «Текст по столбцам» для быстрой правки

Самый простой метод, который не требует знания формул. Подходит для одноразовой обработки небольшого количества ячеек (до 100-200 строк). Суть в том, что Excel временно разобьёт текст на части по разделителю (пробел, запятая, точка с запятой), а затем вы сможете вручную поменять столбцы местами.

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

  1. Выделите столбец с данными, которые нужно изменить.
  2. Перейдите на вкладку ДанныеТекст по столбцам.
  3. В первом окне выберите С разделителямиДалее.
  4. Укажите разделитель (обычно это Пробел или Табуляция) и снимите галочки с других разделителей.
  5. Нажмите Готово — текст разобьётся на несколько столбцов.
  6. Теперь просто переместите столбцы в нужном порядке (например, перетащите столбец с фамилией перед столбцом с именем).
  7. Скопируйте результат и вставьте поверх исходных данных с помощью Специальная вставка → Значения.

⚠️ Внимание: Этот метод не сохраняет исходные данные в автоматическом режиме. Если вы ошибётесь при перетаскивании столбцов, восстановить первоначальный порядок будет сложно. Всегда дублируйте столбец перед началом работы!

2. Формулы для перестановки слов: универсальные решения

Если данных много или задача повторяется регулярно, ручной метод отнимает слишком много времени. Формулы — надёжный способ автоматизировать процесс. Рассмотрим варианты для разных версий Excel.

#### Способ 1: Для Excel 2019 и новее (функции TEXTSPLIT и TEXTJOIN)

С появлением динамических массивов в Excel 365 и Excel 2021 перестановка слов стала проще:

=TEXTJOIN(" ", ИСТИНА, INDEX(TEXTSPLIT(A1; " ");; {2;1}))

Эта формула:

  1. TEXTSPLIT(A1; " ") — разбивает текст в ячейке A1 по пробелу.
  2. INDEX(..., {2;1}) — выбирает второе и первое слова (меняет их местами).
  3. TEXTJOIN(" ", ИСТИНА, ...) — склеивает слова обратно через пробел.

⚠️ Внимание: Если в ячейке более 2 слов, формулу нужно модифицировать. Например, для перестановки "Фамилия Имя Отчество" в "Имя Фамилия Отчество":

=TEXTJOIN(" "; ИСТИНА; INDEX(TEXTSPLIT(A1; " ");; {2;1;3}))

#### Способ 2: Для Excel 2010–2016 (комбинация ПСТР, ПОИСК, ДЛСТР)

В старых версиях Excel нет TEXTSPLIT, поэтому приходится извлекать слова по позициям:

=СЦЕПИТЬ(

ПСТР(A1; ПОИСК(" "; A1)+1; ДЛСТР(A1));

" ";

ЛЕВСИМВ(A1; ПОИСК(" "; A1)-1)

)

Эта формула:

  1. ПОИСК(" "; A1) — находит позицию первого пробела.
  2. ЛЕВСИМВ(A1; ПОИСК(" "; A1)-1) — извлекает первое слово.
  3. ПСТР(A1; ПОИСК(" "; A1)+1; ДЛСТР(A1)) — извлекает всё после пробела (второе слово).
  4. СЦЕПИТЬ — склеивает слова в обратном порядке.
📊 Какую версию Excel вы используете?
Excel 2010-2016
Excel 2019-2021
Excel 365
Не знаю

3. Перестановка слов с помощью Power Query

Power Query (или Get & Transform в новых версиях) — мощный инструмент для преобразования данных, который позволяет автоматизировать перестановку слов даже в больших таблицах. Преимущество метода: вы создаёте шаги один раз, а затем обновляете данные в один клик.

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

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

Плюсы метода:

  • 🔄 Работает с любым количеством строк (даже миллионами).
  • 📊 Сохраняет связь с исходными данными — при их изменении достаточно обновить запрос.
  • 🛠️ Позволяет добавлять дополнительные преобразования (например, приведение к верхнему регистру).

⚠️ Внимание: Если в исходных данных есть ячейки с разным количеством слов (например, где-то "Иванов И.", а где-то "Иванов Иван Иванович"), Power Query может создать лишние столбцы. В этом случае перед объединением удалите ненужные столбцы или замените пустые значения функцией Table.FillDown.

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

4. Макрос VBA для автоматической перестановки

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

Пример макроса для перестановки двух слов:

Sub SwapWords()

Dim rng As Range

Dim cell As Range

Dim parts() As String

Dim i As Integer

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

Set rng = Selection

For Each cell In rng

If InStr(cell.Value, " ") > 0 Then

parts = Split(cell.Value, " ")

' Меняем первое и второе слово местами

cell.Value = parts(1) & " " & parts(0)

End If

Next cell

End Sub

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

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

Расширенные возможности:

  • 🔄 Можно модифицировать скрипт для трёх и более слов (например, "Фамилия Имя Отчество" → "Имя Отчество Фамилия").
  • 📌 Добавить проверку на пустые ячейки или ячейки без пробелов.
  • 🔧 Сохранить макрос в персональной книге макросов, чтобы он был доступен во всех файлах.

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

Как изменить макрос для 3 слов?

Чтобы переставить "Фамилия Имя Отчество" в "Имя Отчество Фамилия", замените строку внутри цикла на:

cell.Value = parts(1) & " " & parts(2) & " " & parts(0)

5. Перестановка слов с учётом регистра и символов

Иногда текст в ячейках содержит не только слова, но и запятые, точки, дефисы или начинается с заглавных букв. В таких случаях простые формулы могут дать сбой. Рассмотрим расширенные приёмы.

#### Проблема 1: Лишние символы (запятые, тире)

Если в ячейке текст вида "Иванов, Иван" или "Москва - ул. Ленина", сначала нужно удалить ненужные символы или использовать их как разделители. Например:

=TEXTJOIN(" "; ИСТИНА; INDEX(TEXTSPLIT(ПОДСТАВИТЬ(A1; ","; " "); " ");; {2;1}))

Здесь ПОДСТАВИТЬ заменяет запятую на пробел, а затем TEXTSPLIT разбивает текст.

#### Проблема 2: Разный регистр

Если слова записаны в разном регистре (например, "иванов Иван"), можно привести их к единому виду с помощью ПРОПИСН, СТРОЧН или ПРОПНАЧ:

=TEXTJOIN(" "; ИСТИНА;

ПРОПНАЧ(INDEX(TEXTSPLIT(A1; " ");; 2));

ПРОПНАЧ(INDEX(TEXTSPLIT(A1; " ");; 1))

)

#### Проблема 3: Множественные пробелы

Если между словами несколько пробелов, используйте СЖПРОБЕЛЫ перед обработкой:

=TEXTJOIN(" "; ИСТИНА; INDEX(TEXTSPLIT(СЖПРОБЕЛЫ(A1); " ");; {2;1}))

Критичный нюанс: если в ячейке есть символы переноса строки (Alt+Enter), стандартные формулы не сработают. В этом случае используйте функцию ПОДСТАВИТЬ(A1; СИМВОЛ(10); " "), чтобы заменить переносы на пробелы.

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

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

Метод Сложность Подходит для Минусы Плюсы
Текст по столбцам 10–200 строк Ручная работа, нет автоматизации Не требует формул, интуитивно
Формулы (TEXTSPLIT) ⭐⭐ Любой объём Работает только в Excel 2019+ Автоматически обновляется
Формулы (ПСТР, ПОИСК) ⭐⭐⭐ Любой объём Сложный синтаксис, ошибки при лишних пробелах Работает во всех версиях
Power Query ⭐⭐ Большие таблицы (1000+ строк) Требует изучения интерфейса Сохраняет связь с данными, гибкие настройки
VBA-макрос ⭐⭐⭐ Регулярные задачи Нужны права на выполнение макросов Максимальная автоматизация, работает быстро

🔹 Рекомендации по выбору:

  • 📌 Для одноразовой правкиТекст по столбцам.
  • 📊 Для больших таблицPower Query.
  • 🔄 Для регулярных задачVBA-макрос.
  • 📈 Для динамических данных — формулы TEXTSPLIT/TEXTJOIN.

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

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

⚠️ Ошибка 1: Формула возвращает #ЗНАЧ!

Причина: В ячейке нет пробела (например, текст слитный или пустой).

Решение: Добавьте проверку с ЕСЛИОШИБКА:

=ЕСЛИОШИБКА(TEXTJOIN(" "; ИСТИНА; INDEX(TEXTSPLIT(A1; " ");; {2;1})); A1)

⚠️ Ошибка 2: Power Query не разбивает текст

Причина: В качестве разделителя указан не тот символ (например, табуляция вместо пробела).

Решение: Проверьте исходные данные на наличие непечатаемых символов (используйте =КОДСИМВ(ПСТР(A1;1;1)) для диагностики).

⚠️ Ошибка 3: Макрос не работает

Причина: Включена защита листа или отключены макросы.

Решение: Проверьте настройки безопасности (Файл → Параметры → Центр управления безопасностью) и разблокируйте лист (Рецензирование → Снять защиту листа).

⚠️ Ошибка 4: Лишние пробелы в результате

Причина: В исходных данных есть невидимые символы (например, неразрывный пробел).

Решение: Замените все пробелы на стандартные с помощью =ПОДСТАВИТЬ(A1; СИМВОЛ(160); " ").

💡 Совет: Всегда тестируйте формулы на копии данных, а не на оригинале. Особенно это касается макросов и Power Query, которые могут перезаписать исходные значения.

FAQ: Частые вопросы по перестановке слов в Excel

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

Да, с помощью функции Текст по столбцам (раздел 1 статьи) или Power Query (раздел 3). Эти методы не требуют знания формул, но подходят только для одноразовых задач.

Почему формула TEXTSPLIT не работает в моём Excel?

Функции TEXTSPLIT и TEXTJOIN появились только в Excel 2019 и новее (включая Excel 365). Если у вас более старая версия, используйте альтернативные формулы из раздела 2.

Как переставить слова в ячейке с запятыми (например, "Иванов, Иван")?

Сначала замените запятую на пробел с помощью =ПОДСТАВИТЬ(A1; ","; " "), а затем примените любую формулу из статьи. Или используйте запятую как разделитель в TEXTSPLIT:

=TEXTJOIN(" "; ИСТИНА; INDEX(TEXTSPLIT(A1; ",");; {2;1}))
Можно ли автоматически переставить слова при импорте данных?

Да, с помощью Power Query. При импорте данных из CSV или другой таблицы добавьте шаг разделения столбца по пробелу, а затем объедините их в нужном порядке. Так преобразование будет происходить автоматически при каждом обновлении.

Как переставить слова в Google Таблицах?

В Google Sheets работают аналогичные принципы, но вместо TEXTSPLIT используйте SPLIT, а вместо TEXTJOINJOIN. Пример:

=JOIN(" "; INDEX(SPLIT(A1; " ");; {2;1}))