Перестановка слов в ФИО в ячейках
Как поставить фамилию после имени и отчества в ячейках Экселя? Например, изначально ФИО стоит так: "Собачкин Андрей Олегович". Мне надо получить "Андрей Олегович Собачкин". Нужна формула, а не макрос.
Ответы (3 шт):
Задача эквивалентна задаче переставить первое слово в конец строки.
Подразумевая, что исходный текст в ячейке D5и слова разделены пробелом:
Если в Excel'е есть поддержка регулярных выражений, как в libreoffice, то можно обойтись этим:
REGEX(D5;"^(\S*)\s(.*)$";"$2 $1")Если нет, то придётся шаманить что-то такое:
CONCAT(RIGHT(D5;LEN(D5)-FIND(" ";D5));" ";LEFT(D5;FIND(" ";D5)-1))или в русской версии:
СЦЕПИТЬ(ПРАВСИМВ(D5;ДЛСТР(D5)-НАЙТИ(" ";D5));" ";ПРАВСИМВ(D5;НАЙТИ(" ";D5)-1))
На выбор. Ищем первый пробел и по нему делим текст:
=ПСТР(A2&" "&A2;ПОИСК(" ";A2)+1;ДЛСТР(A2))
=ПСТР(A2;ПОИСК(" ";A2)+1;30)&" "&ЛЕВБ(A2;ПОИСК(" ";A2)-1)
=ЗАМЕНИТЬ(A2;1;ПОИСК(" ";A2);)&" "&ЛЕВБ(A2;ПОИСК(" ";A2)-1)
=ПОДСТАВИТЬ(A2;ЛЕВБ(A2;ПОИСК(" ";A2));)&" "&ЛЕВБ(A2;ПОИСК(" ";A2)-1)
Функция пользователя (UDF), позволяющая расставлять три слова в любом порядке или возвращать повторы слов.
Function fShiftName(sName As String, Optional j1 As Long = 2, _
Optional j2 As Long = 3, Optional j3 As Long = 1) As String
Dim aSpl
aSpl = Split(sName, " ")
fShiftName = aSpl(j1 - 1) & " " & aSpl(j2 - 1) & " " & aSpl(j3 - 1)
End Function
Параметры, передаваемые в функцию: ссылка на ячейку (или текст) и три числа, устанавливающие порядок слов. Ссылка обязательна, числа - опционально (по умолчанию слова переставляются в порядке 2, 3, 1 (второе, третье, первое). Порядок по умолчанию можно поменять, изменив значения переменных jx
Функция записывается в общий модуль в редакторе VBA. В ячейке вызывать функцию формулой.
Примеры для исходного текста Первый Второй Третий
=fShiftName(A2) - с параметрами по умолчанию: Второй Третий Первый
=fShiftName(A2;;;1) - то же, что и по умолчанию: Второй Третий Первый
=fShiftName("Первый Второй Третий";3;1;2) - другая перестановка: Третий Первый Второй
=fShiftName("Первый Второй Третий";3;;3) - повтор слова: Третий Третий Третий
=fShiftName(A2;3;3;1) - повтор с перестановкой: Третий Третий Первый
Если Вы используете MS Excel 2013 или новее, то можете решить эту задачу без формул с помощью инструмента Мгновенное заполнение (по ссылке найдёте короткое обучающее видео и подробные инструкции)