Периодически при обработке данных возникает необходимость разбить строку с ФИО на три подстроки: фамилия, имя, отчество. Такая задачка вновь всплыла при выгрузке контактной информации из 1С для импорта пользователей в Office365.
Предположим в строке A4 находится текст: Федоров Андрей Алексеевич
Для выделения фамилии:
- Для нахождения количества знаков берем позицию первого пробела и вычитаем 1: НАЙТИ(» «;A4;1)-1).
- Вычленяем подстроку с 1-й позиции.
- Чтобы гарантированно очистить от пробелов используем функцию СЖПРОБЕЛЫ().
=СЖПРОБЕЛЫ(ПСТР(A4;1;НАЙТИ(" ";A4;1)-1))
Для выделения имени:
- Находим позицию первого пробела и прибавляем 1: НАЙТИ(» «;A4;1)+1.
- Находим позицию второго пробела. Для этого в формуле поиска искать нужно с позиции найденной во в п.1: НАЙТИ(» «;A4;НАЙТИ(» «;A4;1)+1).
- Чтобы найти количество символов для извлечения вычитаем из значения п. 2 то, что получено в п.1.
- Используем значение из п.1 в качестве начальной позиции.
- Используем СЖПРОБЕЛЫ().
=СЖПРОБЕЛЫ(ПСТР(A4;НАЙТИ(" ";A4;1)+1;НАЙТИ(" ";A4;НАЙТИ(" ";A4;1)+1)-НАЙТИ(" ";A4;1))))
Чтобы собрать полученные значения в DisplayName для импорта используем функцию сцепить: =СЦЕПИТЬ(B4;» «;C4)
Мне подсказали более простой способ (Text To Column).