Ваш вопрос почти идентичен этому вопросу: извлекает имена в excel , за исключением того, что вы хотите вернуть только инициал для второго имени.
В результате мой следующий ответ довольнопочти так же, как тот, который я дал на вышеупомянутый вопрос, за исключением добавления небольшого поворота для поиска инициала для второго имени.
Примечание: Метод 1 будет работать в случае, если имясодержит только одно слово;Метод 2 будет работать, только если имя и фамилия - это одно слово.
Метод1 Использование функций LEFT + RIGHT + MID + FIND
Имя: =MID(A2,FIND(",",A2)+2,FIND(" ",A2,FIND(" ",A2)+1)-FIND(",",A2)-2)
Отчество: =LEFT(RIGHT(A2,LEN(A2)-FIND(" ",A2,FIND(" ",A2)+1)),1)
Фамилия: =LEFT(A2,FIND(",",A2)-1)
Логика для поиска Имя состоит в том, чтобы найти позицию ,(space)
и второе (space)
и вернуть символы между ними.Логика для Отчество состоит в том, чтобы найти второе (space)
и вернуть все, что находится справа.
Метод 2 Использование функций FILTERXML + SUBSTITUTE
Имя: =FILTERXML("<data><a>"&SUBSTITUTE(SUBSTITUTE(A7,",","")," ","</a><a>")&"</a></data>","/data/a[2]")
Отчество: =LEFT(FILTERXML("<data><a>"&SUBSTITUTE(SUBSTITUTE(A7,",","")," ","</a><a>")&"</a></data>","/data/a[3]"),1)
Фамилия: =FILTERXML("<data><a>"&SUBSTITUTE(SUBSTITUTE(A7,",","")," ","</a><a>")&"</a></data>","/data/a[1]")
Логика заключается в использовании ЗАМЕНА для преобразования полного имени во что-то вроде следующего:
<data><a>
Фамилия </a><a>
Имя </a><a>
Отчество </a></data>
Затем используйте FILTERXML для возврата нужного имени в соответствии с его порядком 1, 2 or 3
в скрипте XML.
Для логики этой формулы вы можете прочитать эту статью: Извлечь слова с помощьюFILTERXML .