Open
Close

Выделение имени отчества из фио в эксель. Объединить слова из разных ячеек в текст Excel. В этом видео подробно показано, как разделить текст по столбцам

Если вы имеете диапазон ячеек, содержащих имена и фамилии людей, часто бывает необходимо работать только с именем или только с фамилией. Например, вам может потребоваться хранение имен и фамилий отдельно для дальнейшего импортирования в базу данных, в которой хранится ваш аттестат профбухгалтера . Или вам может потребоваться отсортировать имена.

Решением является использование функции НАЙТИ() для поиска пробела, разделяющего две части имени, а затем использование функции ЛЕВСИМВ() или ПРАВСИМВ() для выделения необходимой части. Для выделения левой части (предположим, там находится фамилия) используйте следующую формулу:
=ЛЕВСИМВ(A2;НАЙТИ("";A2)-1)

Обратите внимание, что в формуле происходит вычитание единицы из необходимого для выделения числа символов, дабы предотвратить появление пробела. Вы можете использовать данную формулу для любого более общего примера для выделения первого слова из любой строки. Для выделения имени необходимо построить похожую формулу, используя функцию ПРАВСИМВ():
=ПРАВСИМВ(A2;ДЛСТР(A2)-НАЙТИ("";A2))

Для выделения необходимого числа символов формула берет длину слова и вычитает из него положение пробела. Вы можете использовать данную формулу для любого более общего примера для выделения второго слова из любой строки. На рис. 4.13 показаны результаты работы.

Здесь же в столбце D вы видите результат объединения двух предыдущих формул для изменения порядка следования слов. Обратите внимание, что данные формулы выведут ошибку, в случае если строка содержит только одно слово. Для предотвращения этого используйте функцию ЕСЛИОШИБКА() :
=ЕСЛИОШИБКА(ЛЕВСИМВ{A2;НАЙТИ("";A2)-1);A2) . В таком случае, если ячейка не содержит пробела, просто будет выведено значение ячейки A2.

Если полное имя человека, с которым вы работаете, содержит фамилию, имя и отчество, вы не сможете применять вышеуказанные формулы. В этом случае первая формула для выделения фамилии будет работать нормально, но выделить правую часть таким образом не получится. Существует несколько способов выйти из этой ситуации, мы с вами рассмотрим решение с применением функций ПОИСК() и НАЙТИ() .

Например, нам дано следующее имя: Булгаков Виктор Кирсанович. Предполагая, что имя находится в ячейке A2, формула =НАЙТИ(" ";A2) , вернет 9 — позицию первого пробела. Для нахождения позиции следующего пробела необходимо указать позицию первого пробела плюс 1: =НАЙТИ(" ";A2;НАЙТИ(" ";A2)+1).

Теперь можно применить данную конструкцию для нахождения самой правой части (в данном случае это отчество): =ПРАВСИМВ(A2;ДЛСТР(A2)-НАЙТИ(" ";A2;НАЙТИ(" ";A2)+1)) .

Для выделения центральной части необходимо определить разницу в положении первого и второго пробела и воспользоваться формулой выделения из любой части строки: =ПСТР(A2;НАЙТИ(" ";;A2)+1;НАЙТИ(" ";A2;НАЙТИ(" ";A2)+1-НАЙТИ(" ";A2)) . На рис. 4.14 показаны результаты работы.

Excel для Office 365 Excel для Office 365 для Mac Excel 2019 Excel 2016 Excel 2019 для Mac Excel 2013 Excel 2010 Excel 2007 Excel 2016 для Mac Excel для Mac 2011 Excel Online Excel для iPad Excel для iPhone Excel для планшетов с Android Excel для телефонов с Android Excel Mobile Excel Starter 2010 Меньше

Предположим, что вы хотите создать одного полное имя столбца путем объединения двух других столбцов, имени и фамилии. Для объединения имени и фамилии используется функция СЦЕПИТЬ или оператор амперсанд (&).

Важно: Эта функция в Excel 2016Excel Mobile и Excel Online, был заменен с помощью функции ОБЪЕДИНЕНИЯ . Несмотря на то, что функция СЦЕПИТЬ по-прежнему доступен для обеспечения обратной совместимости, следует использовать с этого момента ОБЪЕДИНЕНИЯ. Это связано с СЦЕПИТЬ могут быть недоступны в будущих версиях Excel.

Пример

Скопируйте приведенный ниже на пустой лист.

Фамилия

Владимир

Формула

Описание (результат)

Объединяет указанные выше имена, разделенных пробелом (Белова)

Объединяет указанные выше имена, разделяя их точкой с запятой (Новиков, Павел)

СЦЕПИТЬ(A2;" ";B2)

Часто при составлении договора, счета, коммерческого предложения или другого документа, мы работаем с фамилией именем и отчеством клиента. Бывает необходимо разделить ФИО и получить только имя, что обратиться к клиенту в тексте документа, бывает нужно сделать графу с подписантом, оставив фамилию и инициалы.

Конечно можно написать формулу , которая извлечет нужные данные из ФИО, но даже опытному человеку потребуется 5-7 минут на это. А что если заранее не знаешь расположение фамилии в тексте? Гораздо проще и удобнее пользоваться готовыми функциями из надстройки VBA-Excel .

Найти фамилию в ФИО

После установки надстройки будет доступна новая функция =ФАМИЛИЯ(ФИО) , где

  • ФИО - текст или ссылка на ячейку, которая содержит ФИО полностью

Задача данной функции - извлечь из ячейки только фамилию. Причем ей не важен порядок. Фамилия может идти как в начале, так в конце или середине текста.

Найти имя в ФИО

Аналогичная функция для имени =ИМЯ(ФИО) . Она извлекает имя из текста с ФИО, также не важно где расположенное.

Найти отчество в ФИО

Последняя функция из этой серии - функция =ОТЧЕСТВО(ФИО) для извлечения отчества.

Примеры работы с ФИО в Excel Вывести фамилию и инициалы

Одной из распространенных задач при составлении документов - это преобразование текста вида Фамилия Имя Отчество к тексту Фамилия И. О. Решить ее можно используя следующую формулу:

ФАМИЛИЯ(A1)&" "&ЛЕВСИМВ(ИМЯ(A1))&". "&ЛЕВСИМВ(ОТЧЕСТВО(A1))&"."

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

Также плюс в том, что нам не важно расположение фамилии в тексте, функция определит все автоматически.

Функция получает в качестве параметра текстовую строку с виде "Фамилия имя отчество", и обрезает имя и отчество, оставляя лишь инициалы - в виде "Фамилия И. О."

Данную функцию можно использовать как UDF (определённые пользователем функции) в ячейках листа Excel .
(см. пример во вложении)

Описание особенностей функции - на форуме: programmersforum.ru/showpost.php?p=757147&postcount=6

Не существует точного формального алгоритма разделения ФИО на части.
Отделить фамилию от имени формально нельзя, не зная генеалогии и языка носителя. Можно только воспользоваться разнообразными эвристиками.

Кроме того, разные органы (в разное время) придерживались (-ются) разных взглядов на то как в том или ином случае должны выглядеть инициалы.
Одно дело документы УФМС - другое, регистраторы ЦБ, третье - оформление коммерческих документов.
Так, часть служб требует что бы 2-3 сложные короткие имена Юго-Восточной Азии не сокращались. А часть нет.

Да же с вопросом где должны стоять инициалы справа или слева - нет однозначности. Нет, конечно есть правила русского языка... Но превалируют правила делового оборота той или иной структуры (или просто как захочет левая задняя нога клерка принимающего документы)...

У многих возможно возникает вопрос: А откуда берётся весь этот зоопарк и зачем это всё нужно? Как правило, все эти Доны Педро - иностранные граждане получающие Российский паспорт на основании ранее выданных вне юрисдикции РФ документов. Ситуации правовые бывают разные. И достаточно часто в новый Российский паспорт пишется вариант транслитерации на кириллицу с языка носителя.
Российские паспорта с -оглы и -кызы выдаются сейчас в Татарстане. Мне встретился клиент которого по паспорту 2007 г. звали Мустафа Олег оглы...

Option Compare Text Public Function Инициалы(s As String , Optional ToLeft As Boolean = False ) Dim sv As Variant , sФ As String , sИ As String , sО As String , i As Long , k As Long Application.Volatile True If InStr(s, "." ) > 0 Or Len(Trim$(s)) = 0 Then Инициалы = s "Инициалы заданы явно или пустая строка Exit Function End If "Нормализация входной строки s = Replace(Application.Trim(s), Chr(30), "-" ) s = Replace(Replace(s, " -" , "-" ), "- " , "-" ) s = Replace(Replace(s, "" " , """ ), " "" , """ ) " О "Генри Александр; О" Генри Александр; Н" Гомо; Д" Тревиль sv = Split(s) sИ = vbNullString: sО = vbNullString: sФ = vbNullString i = UBound (sv) If i < 1 Then Инициалы = s: Exit Function Select Case sv(i) Case "оглы" , "кызы" , "заде" "бей, бек, заде, зуль, ибн, кызы, оглы, оль, паша, уль, хан, шах, эд, эль i = i - 1 sО = UCase(Left$(sv(i), 1)) & "." i = i - 1 Case "паша" , "хан" , "шах" , "шейх" i = i - 1 Case Else Select Case Right$(sv(i), 3) Case "вич" , "вна" If i >= 2 Then "Стандартное окончание русских отчеств sО = СropWord(sv(i)) Else "Имя типа Босан Славич sИ = СropWord(sv(i)): sФ = sv(0) End If i = i - 1 Case Else k = InStr(sv(i), "-" ) If k > 0 Then Select Case Mid$(sv(i), k + 1) Case "оглы" , "кызы" , "заде" , "угли" , "уулы" , "оол" "Вариант насаба «-оглы» и «-заде» типа Махмуд-оглы sО = UCase(Left$(sv(i), 1)) & "." i = i - 1 If i = 0 Then sИ = sО sО = vbNullString End If End Select ElseIf i > 2 Then Select Case sv(i - 1) Case "ибн" , "бен" , "бин" sО = UCase(Left$(sv(i), 1)) & "." " Усерталь Алишер бен Сулейман i = i - 2 End Select Else " Бен Эдуард sИ = UCase(Left$(sv(i), 1)) If Len(sv(i)) > 1 Then sИ = sИ & "." i = i - 1 End If End Select End Select Select Case sv(0) Case "де" , "дел" , "дос" , "cент" , "ван" , "фон" , "цу" If i >= 2 Then sФ = sv(0) & " " & StrConv(sv(1), vbProperCase) sИ = СropWord(sv(2)) Else "Де Николай If Len(sИ) > 0 Then sФ = sv(0) & " " & StrConv(sv(1), vbProperCase) Else sФ = StrConv(sv(0), vbProperCase): sИ = СropWord(sv(1)) End If End If Case Else If Len(sФ) = 0 Then "Ещё не определили фамилию sФ = StrConv(sv(0), vbProperCase) If Len(sИ) = 0 Then sИ = СropWord(sv(1)) End If End Select If ToLeft Then Инициалы = sИ & sО & " " & sФ Else Инициалы = sФ & " " & sИ & sО End Function Public Function СropWord(s As Variant ) As String If Len(s) = 1 Then СropWord = s Else ss$ = UCase(Left$(s, 1)) & "." : k = InStr(s, "-" ) If k > 0 Then ss$ = ss$ & "-" & Mid$(s, k + 1, 1) & "." СropWord = ss$ End If End Function

Вложение Размер

Список в Excel можно корректировать формулами – имя и отчество заменить на инициалы, соединить слова из ячеек в предложение, вставить слова в список Excel.
У нас есть таблица, где фамилия, имя и отчество написаны в разных ячейках. Нам нужно разместить их в одной ячейке. Вручную переписывать список долго. Но, в таблице Excel, есть специальная функция. Есть два варианта.
Первый вариант.
У нас такой список.
Нам нужно написать в ячейке D1 ФИО одним предложением. Пишем в этой ячейке (D1) формулу. Нажимаем на ячейку (активной сделаем).
Заходим на закладке «Формулы» в раздел «Библиотека функций», выбираем – «Текстовые», и выбираем функцию «СЦЕПИТЬ». В появившемся окне указываем адреса ячеек, которые нам нужно объединить в одно предложение. Получилось так.

ФИО написаны без пробелов. Чтобы это исправить, формулу нужно доработать. Между адресами ячеек после точки с запятой написать " " . Получилась такая формула.
=СЦЕПИТЬ(A1;" ";B1;" ";C1)
Получилось так.
Теперь формулу копируем вниз по столбцу.
Второй вариант.
Вместо функции «СЦЕПИТЬ» можно просто нажать кнопку амперсанд (&). Формула получится такая.
=A2&B2&С1
Результат такой же, как в первом варианте. Если нет пропусков между словами, то вставьте пробел (" " ).
Формула будет такая. =A2&" "&B2&" "&C2
Объединить можно не только слова, но и цифры. Можно составить предложение из данных ячеек в Excel .
Можно установить формулы в нужных ячейках бланка. Например, у нас есть такой список клиентов с адресами.

Нам нужно составить предложение. В ячейке пишем формулу.
=A2&" "&B2&" "&C2&" "&"проживает по адресу"&" "&"г."&" "&D2&" "&"ул."&" "&E2&" "&"д."&" "&F2&"."
Получилось такое предложение.

По такому принципу составляем любые предложения.
Если текст в ячейках уже написан, но нам нужно вставить дополнительные слова перед имеющимися, то сделать это можно с помощью формулы. У нас такой список.
Нам нужно перед фамилиями вставить слово «Квартиросъемщик». В ячейке нового столбца пишем формулу.
="Квартиросъемщик"&" "&A8
Копируем эту формулу вниз по столбцу. Получился такой список.
Первый столбец можно скрыть или скопировать значение нового столбца без формул, а первый столбец и второй с формулами - удалить.
Ещё один способ добавить текст, числа, символ к тексту в ячейке, смотрите в статье "Добавить текст в ячейки с текстом Excel ".
С помощью формул можно преобразовать список, где имя, отчество и фамилия написаны полностью, в список с фамилией и инициалами . Например, в ячейке написано.
В соседнем столбце пишем такую формулу.
=СЦЕПИТЬ(ЛЕВСИМВ(СЖПРОБЕЛЫ(A1);НАЙТИ(" ";СЖПРОБЕЛЫ(A1);1));ПСТР(СЖПРОБЕЛЫ(A1);НАЙТИ(" ";СЖПРОБЕЛЫ(A1);1)+1;1);".";ПСТР(СЖПРОБЕЛЫ(A1);НАЙТИ(" ";СЖПРОБЕЛЫ(A1);НАЙТИ(" ";СЖПРОБЕЛЫ(A1);1)+1)+1;1);".")
Получилось.
Если между словами появились лишние пробелы, их можно удалить. Подробнее о б этом читайте в статье "Как удалить лишние пробелы в Excel ". Этими же способами можно удалить пробелы между числами, в формуле, т.к. лишние пробелы могут привести к ошибке при подсчете или формула не будет считать.
Можно данные в строке переместить из последних ячеек в первые, перевернуть строку . Например, в ячейках написано: в первой ячейке Иванова, во второй - Мария. Нам нужно написать в первой ячейке Мария, во второй - Иванова. Как это сделать быстро в большой таблице, смотрите в статье " ".