Объединение имени и фамилии. Как разделить в экселе фио. Как разбить ячейки в Excel: «Текст по столбцам», «Мгновенное заполнение» и формулы Как в экселе сократить фио до инициалов

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

Данную функцию можно использовать как 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

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

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

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

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

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

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

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

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

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

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

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

Примеры работы с ФИО в Excel

Вывести фамилию и инициалы

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

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

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

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

Список в 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 ". Этими же способами можно удалить пробелы между числами, в формуле, т.к. лишние пробелы могут привести к ошибке при подсчете или формула не будет считать.
Можно данные в строке переместить из последних ячеек в первые, перевернуть строку . Например, в ячейках написано: в первой ячейке Иванова, во второй - Мария. Нам нужно написать в первой ячейке Мария, во второй - Иванова. Как это сделать быстро в большой таблице, смотрите в статье " ".

Поделиться