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

Работа с фамилиями, именами и отчествами в Microsoft Excel — одна из самых распространённых задач при обработке персональных данных. Часто исходные данные поступают в формате «Иванов Иван Иванович», а требуется привести их к виду «Иванович Иван Иванов» или «Иванов И.И.». Вручную переставлять тысячи записей нереально, но в Excel есть как минимум 5 способов автоматизировать этот процесс — от элементарных функций до продвинутых инструментов вроде Power Query или VBA.

Проблема усложняется, когда ФИО записаны в одной ячейке без разделителей, содержат опечатки или лишние пробелы. Например, «ПетровАнаМария» или «Сидоров Иван Васильевич» (с двойными пробелами). В таких случаях стандартные формулы могут дать сбой, и потребуются дополнительные шаги для очистки данных. Эта статья покрывает все сценарии — от базового разделения по пробелу до обработки нестандартных форматов с помощью регулярных выражений.

Мы разберём методы для разных версий Excel (включая Excel 365 и Excel 2016), покажем, как избежать ошибок при работе с кириллицей, и дадим готовые шаблоны для самых сложных случаев. Если вам нужно не просто поменять местами слова, но и привести данные к единому формату (например, для загрузки в 1С или CRM), здесь вы найдёте решение.

1. Разделение ФИО по столбцам с помощью «Текст по столбцам»

Самый простой способ разделить полное ФИО на отдельные компоненты — использовать встроенный инструмент «Текст по столбцам». Он работает даже в старых версиях Excel и не требует знания формул.

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

  1. Выделите столбец с ФИО.
  2. Перейдите на вкладку ДанныеТекст по столбцам.
  3. В первом окне мастера выберите С разделителямиДалее.
  4. Укажите разделитель — Пробел (снимите галочки с остальных разделителей).
  5. Нажмите Готово.

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

⚠️ Внимание: Если в исходных данных есть двойные пробелы (например, между фамилией и именем), Excel создаст пустые столбцы. Чтобы их убрать, используйте функцию =СЖПРОБЕЛЫ() до разделения.

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

  • 🔹 Не требует формул или макросов.
  • 🔹 Работает с любыми разделителями (пробел, запятая, точка с запятой).
  • 🔹 Сохраняет исходный формат данных (без преобразования в текст).

Недостатки:

  • 🚫 Не подходит для ФИО без пробелов (например, «ИвановИванИванович»).
  • 🚫 Требует ручной очистки, если данные нестандартные (лишние инициалы, тире в двойных фамилиях).
📊 Как часто вам приходится обрабатывать ФИО в Excel?
Ежедневно
Раз в неделю
Редко
Никогда

2. Формулы для перестановки ФИО: ПСТР, ПОИСК и ЛЕВСИМВ

Если нужно автоматизировать процесс или обработать данные без ручного разделения, используйте формулы. Основные функции для работы с текстом:

  • ЛЕВСИМВ() — извлекает символы с начала строки.
  • ПРАВСИМВ() — извлекает символы с конца строки.
  • ПСТР() — возвращает подстроку из середины текста.
  • ПОИСК() — находит позицию пробела или другого символа.

Пример: разделим «Иванов Иван Иванович» на три части.

  1. Фамилия: =ЛЕВСИМВ(A1;ПОИСК(" ";A1)-1)
  2. Имя: =ПСТР(A1;ПОИСК(" ";A1)+1;ПОИСК(" ";A1;ПОИСК(" ";A1)+1)-ПОИСК(" ";A1)-1)
  3. Отчество: =ПРАВСИМВ(A1;ДЛСТР(A1)-ПОИСК(" ";A1;ПОИСК(" ";A1)+1))

Чтобы поменять местами фамилию и имя (получить «Иван Иванович Иванов»), объедините результаты:

=ПСТР(A1;ПОИСК(" ";A1)+1;ПОИСК(" ";A1;ПОИСК(" ";A1)+1)-ПОИСК(" ";A1)-1) & " " &

ПРАВСИМВ(A1;ДЛСТР(A1)-ПОИСК(" ";A1;ПОИСК(" ";A1)+1)) & " " &

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

⚠️ Внимание: Если в фамилии есть дефис (например, «Петров-Смирнов»), формулы выше дадут сбой. В таких случаях используйте НАЙТИ() с учётом символа "-" или предварительно замените дефисы на пробелы функцией =ПОДСТАВИТЬ().

Альтернативный вариант для Excel 365: используйте функцию ТЕКСТРАЗД(), которая упрощает разделение по разделителю:

=ТЕКСТРАЗД(A1; " ")

Эта функция вернёт массив из трёх элементов (фамилия, имя, отчество), которые можно дальше обработать с помощью ИНДЕКС() или ВЫБОР().

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

Проверить наличие дефисов в фамилиях

Заменить двойные пробелы на одиночные

Убедиться, что все ФИО записаны в одном формате-->

3. Power Query: автоматическая обработка больших массивов

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

  • 🔹 Разделить текст по любому разделителю (включая регулярные выражения).
  • 🔹 Очистить данные от лишних пробелов и символов.
  • 🔹 Объединить столбцы в новом порядке.
  • 🔹 Сохранить результат как связь для автоматического обновления.

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

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

Преимущества Power Query:

  • 🔹 Обрабатывает миллионы строк без тормозов.
  • 🔹 Сохраняет историю преобразований (можно редактироватьLater).
  • 🔹 Поддерживает сложные сценарии (например, разделение по нескольким пробелам подряд).

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

Как обработать ФИО с инициалами (например, "Иванов И.И.")?

В Power Query используйте условное разделение:

1. Добавьте пользовательский столбец с формулой if Text.Contains([ФИО]; " ") then Text.Split([ФИО]; " ") else { [ФИО]; ""; "" }.

2. Разверните полученный список в отдельные столбцы.

3. Для инициалов (например, "И.И.") используйте Text.Start([Имя]; 1) & ". " & Text.Start([Отчество]; 1) & "." для преобразования в полное отчество (если требуется).

4. Макросы VBA для сложных случаев

Когда формулы и Power Query не справляются (например, при нестандартных форматах вроде «Иванов-Петров Иван» или «Мария Иванова»), поможет VBA. Ниже макрос, который разбирает ФИО на части и переставляет их в порядке «Отчество Имя Фамилия»:

Sub ReverseFIO()

Dim rng As Range

Dim cell As Range

Dim parts() As String

Dim result As String

Set rng = Selection ' Выделенный диапазон

For Each cell In rng

' Разделяем по пробелу

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

' Проверяем количество частей

Select Case UBound(parts) + 1

Case 3 ' ФИО полностью

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

Case 2 ' Фамилия + Имя или Имя + Фамилия

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

Case 1 ' Только фамилия или имя

result = cell.Value & " - -"

Case Else ' Нестандартный формат

result = "Ошибка: " & cell.Value

End Select

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

cell.Offset(0, 1).Value = result

Next cell

End Sub

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

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

Макрос учитывает:

  • 🔹 ФИО с дефисами (например, «Петров-Смирнов»).
  • 🔹 Отсутствие отчества.
  • 🔹 Лишние пробелы (убирает их автоматически).
⚠️ Внимание: Перед запуском макроса сохраните файл в формате .xlsm (с поддержкой макросов), иначе код не выполнится. Если в данных есть опечатки (например, «ИвановИван»), макрос вернёт ошибку — такие случаи нужно обрабатывать вручную.

5. Обработка нестандартных форматов (без пробелов, с инициалами)

Частая проблема — ФИО записаны слитно («ИвановИванИванович») или в формате «Иванов И.И.». Для таких случаев потребуется комбинация функций или регулярные выражения (в Excel 365).

Способ 1: Разделение по фиксированной длине

Если известно, что фамилия всегда из 6 символов, имя — из 4, а отчество — из 8, используйте:

=ЛЕВСИМВ(A1;6) & " " & ПСТР(A1;7;4) & " " & ПРАВСИМВ(A1;8)

Способ 2: Преобразование «Иванов И.И.» в «Иванов Иван Иванович»

Для расшифровки инициалов нужен справочник имён. Например, если в столбце B хранится таблица соответствий («И.» → «Иван»), используйте:

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

ВПР(ПСТР(A1;ПОИСК(" ";A1)+1;1);B:B;1;ЛОЖЬ) & " " &

ВПР(ПРАВСИМВ(A1;1);B:B;1;ЛОЖЬ)

Способ 3: Регулярные выражения (Excel 365 с LAMBDA)

В новых версиях Excel можно использовать ТЕКСТПОСЛЕ(), ТЕКСТДО() и ПОДСТАВИТЬ() с регулярками:

=ТЕКСТПОСЛЕ(ПОДСТАВИТЬ(A1;"([А-Я])([а-я]+)";"$1.$2 ");" ")

Эта формула преобразует «ИвановИванИванович» в «Иванов И. И.».

Исходный формат Желаемый результат Формула/метод
Иванов Иван Иванович Иванович Иван Иванов =ПСТР(...) & " " & ПРАВСИМВ(...) & " " & ЛЕВСИМВ(...)
ИвановИванИванович Иванов И. И. Регулярные выражения или VBA
Петров-Смирнов П.С. Петров-Смирнов Петр Сергеевич VBA + справочник имён
Мария Иванова Иванова Мария =ПРАВСИМВ(A1;ПОИСК(" ";A1)-1) & " " & ЛЕВСИМВ(A1;ПОИСК(" ";A1))
И.И. Иванов Иванов Иван Иванович VBA + база данных имён

6. Проверка и очистка данных перед обработкой

Перед тем как менять ФИО местами, убедитесь, что данные приведены к единому формату. Частые ошибки:

  • 🔹 Лишние пробелы: используйте =СЖПРОБЕЛЫ(A1).
  • 🔹 Разный регистр: =ПРОПНАЧ(A1) (первые буквы заглавные).
  • 🔹 Опечатки: проверьте на наличие символов #, *, ?.
  • 🔹 Пустые ячейки: используйте =ЕПУСТО(A1) для фильтрации.

Пример проверки на корректность ФИО (3 слова, разделённые пробелами):

=И(

ДЛСТР(СЖПРОБЕЛЫ(A1))-ДЛСТР(ПОДСТАВИТЬ(СЖПРОБЕЛЫ(A1);" ";""))=2; ' Ровно 2 пробела

ПОИСК(" ";A1)>0; ' Есть хотя бы один пробел

ДЛСТР(A1)<50 ' Длина разумная

)

Если формула возвращает ИСТИНА, формат корректен.

Для массовой очистки:

  1. Создайте копию исходных данных.
  2. Примените СЖПРОБЕЛЫ() ко всему столбцу.
  3. Замените двойные фамилии (с дефисом) на одинарные с помощью =ПОДСТАВИТЬ(A1;"-";" ").
  4. Удалите лишние символы: =ПОДСТАВИТЬ(A1;"*";"").

7. Экспорт результатов и дальнейшее использование

После обработки ФИО вам может потребоваться:

  • 🔹 Скопировать данные в другую программу (1С, CRM, базу данных).
  • 🔹 Сохранить как CSV для загрузки на сайт.
  • 🔹 Объединить с другими данными (например, добавить даты рождения).

Рекомендации по экспорту:

  • 📌 Для : сохраните файл в формате .xlsx и используйте обработку «Загрузка данных из таблицы».
  • 📌 Для CRM (Bitrix24, AmoCRM): экспортируйте в CSV с разделителем ; и кодировкой UTF-8.
  • 📌 Для веб-форм: проверьте, что в итоговом файле нет скрытых символов (используйте =КОДСИМВ() для диагностики).

Если при экспорте в CSV русские буквы отображаются кракозябрами:

  1. Сохраните файл в Excel как CSV (разделители — запятые) (*.csv).
  2. Откройте файл в Блокноте.
  3. Выберите ФайлСохранить как → укажите кодировку UTF-8.

Частые ошибки и как их избежать

Даже опытные пользователи Excel сталкиваются с проблемами при работе с ФИО. Рассмотрим типичные ошибки и способы их решения:

1. Фамилии с дефисами или апострофами

Формулы вроде ПОИСК(" ") не учитывают, что пробел может быть частью фамилии (например, «О’Коннор-Воронцов»). Решение:

  • 🔹 Используйте НАЙТИ() с учётом символов "-" и "'".
  • 🔹 В Power Query настройте разделитель как [A-Za-zА-Яа-я'-] (регулярное выражение).

2. Инициалы вместо полных имён

Если исходные данные содержат «Иванов И.И.», а нужно «Иванов Иван Иванович», без справочника имён не обойтись. Создайте отдельный лист со соответствиями:

  • 🔹 Столбец A: инициалы («И.»).
  • 🔹 Столбец B: полные имена («Иван»).

Затем используйте ВПР() или XLOOKUP() для расшифровки.

3. Пустые ячейки или неполные ФИО

Если в данных есть строки типа «Петров» (без имени и отчества), формулы могут выдавать ошибки. Решение:

  • 🔹 Добавьте проверку =ЕСЛИОШИБКА(формула; "").
  • 🔹 В Power Query используйте условную логику:
    if [ФИО] = null then "-" else Text.Split([ФИО]; " ")

4. Проблемы с кириллицей в макросах

Если VBA-макрос некорректно обрабатывает русские буквы:

  • 🔹 Убедитесь, что в настройках Windows установлен русский язык.
  • 🔹 Замените Split на WorksheetFunction.TextToColumns для надёжного разделения.

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

Можно ли поменять ФИО местами без формул, только мышью?

Да, если данные уже разделены по столбцам:

  1. Выделите столбец с именем и перетащите его левее столбца с фамилией.
  2. Аналогично переместите отчество.
  3. Объедините ячейки с помощью & или функции СЦЕПИТЬ().

Для неразделённых данных этот метод не подходит — сначала нужно использовать Текст по столбцам.

Как обработать ФИО в формате «Иванов И. И.» (с двойными пробелами)?

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

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

Затем применяйте стандартные методы разделения.

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

Ошибка #ЗНАЧ! возникает, если:

  • 🔹 В ячейке нет пробелов (например, слитное ФИО).
  • 🔹 Функция ПОИСК() не находит разделитель.
  • 🔹 Данные содержат непечатаемые символы (проверьте с помощью =КОДСИМВ()).

Решение: добавьте проверку =ЕСЛИОШИБКА() или очистите данные.

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

Используйте Power Query:

  1. Загрузите данные как связь (ДанныеИз таблицы/диапазона).
  2. Настройте преобразования (разделение, перестановку).
  3. Выберите Закрыть и загрузить в...Только создание связи.
  4. Создайте сводную таблицу или формулу, ссылающуюся на связь.

Теперь при обновлении исходных данных (ДанныеОбновить все) результат пересчитается автоматически.

Можно ли поменять ФИО местами в Google Sheets?

Да, в Google Таблицах используйте аналогичные функции:

  • 🔹 =SPLIT(A1; " ") — разделить по пробелу.
  • 🔹 =LEFT(), =MID(), =RIGHT() — извлечь части.
  • 🔹 =REGEXREPLACE() — для сложных замен.

Пример перестановки:

=MID(A1; FIND(" "; A1)+1; FIND(" "; A1; FIND(" "; A1)+1)-FIND(" "; A1)-1) & " " &

RIGHT(A1; LEN(A1)-FIND(" "; A1; FIND(" "; A1)+1)) & " " &

LEFT(A1; FIND(" "; A1)-1)