Разделяем пробелами Фамилию, Имя и Отчество

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

Пусть имеется текстовая строка с именем, записанным слитно: ПетровИванИванович. Причем, фамилия, имя и отчество написаны с заглавных букв. Используем это для разделения частей имени пробелами (см. файл примера).

C помощью функции КОДСИМВ() определим является ли буква заглавной (прописной), если да, то выведем перед ней пробел.

Сначала создадим вспомогательную таблицу для вывода позиций ПРОПИСНЫХ символов (в столбцах F:ВВ, всего 50 символов).

Формула =ЕСЛИ(ЕСЛИОШИБКА(КОДСИМВ(ПСТР($A5;F$4;1));999)<224;F$4;0) будет возвращать позицию ПРОПИСНЫХ символов, начиная со второго.

В столбцах C:E с помощью формул

=ЛЕВСИМВ(A5;НАИБОЛЬШИЙ($F5:$AI5;2)-1)

=ПСТР(A5;НАИБОЛЬШИЙ($F5:$AI5;2);НАИБОЛЬШИЙ($F5:$AI5;1)-НАИБОЛЬШИЙ($F5:$AI5;2))

=ПРАВСИМВ(A5;ДЛСТР(A5)-НАИБОЛЬШИЙ($F5:$AI5;1)+1)

выведем фамилию, имя и отчество.

И, наконец, в столбце В получим требуемый результат с помощью формулы =C5&" "&D5&" "&E5

 

Связанные статьи

Похожие задачи
Прочитайте другие статьи, решающие похожие задачи в MS Excel. Это позволит Вам решать широкий класс подобных задач.
Средняя: 4.5 (2 оценок)

Комментарии

Михаил Ч. (не проверено)

Данный подход будет ошибаться если используется буква "ё", нужно будет изменить проверку заглавной буквы

Михаил Ч. (не проверено)

Вариант одной формулой массива без вспомогательных ячеек:
=ЗАМЕНИТЬ(ЗАМЕНИТЬ(A1;ПОИСКПОЗ(2;1/ПРОСМОТР(КОДСИМВ(ПСТР(A1;СТРОКА($2:$99);1)&0);{0:168:169:192:224};{0:1:0:1:0}))+1;;" ");ПОИСКПОЗ(1;ПРОСМОТР(КОДСИМВ(ПСТР(A1;СТРОКА($2:$99);1)&0);{0:168:169:192:224};{0:1:0:1:0});)+1;;" ")

если не буквы ё в тексте нет, то можно немного проще:
=ЗАМЕНИТЬ(ЗАМЕНИТЬ(A1;ПОИСКПОЗ(2;1/(КОДСИМВ(ПСТР(A1;СТРОКА($2:$99);1)&"а")<224))+1;;" ");ПОИСКПОЗ(1;Ч(КОДСИМВ(ПСТР(A1;СТРОКА($2:$99);1)&"а")<224);)+1;;" ")

Creator

MCH как всегда - лучший! Спасибо!

Михаил Ч. (не проверено)

Еще вариант, чуть короче и не зависит от алфавита:
=ЗАМЕНИТЬ(ЗАМЕНИТЬ(A1;ПОИСКПОЗ(1;-СОВПАД(ПСТР(A1;СТРОКА($1:$99);1);ПСТР(СТРОЧН(A1);СТРОКА($1:$99);1))^1%);;" ");ПОИСКПОЗ(;-СОВПАД(ПСТР(A1;СТРОКА($1:$99);1);ПСТР(ПРОПНАЧ(A1);СТРОКА($1:$99);1)););;" ")