Как в Excel определить пол по отчеству: формулы, исключения и автоматизация

Почему определение пола по отчеству в Excel — не тривиальная задача

На первый взгляд, задача кажется простой: если отчество заканчивается на «вич» — мужчина, на «вна» — женщина. Но любой, кто хоть раз работал с реальными данными, знает: в жизни всё сложнее. Встречаются отчества с мягким знаком (Ильич, Никитична), двойные отчества (Сергеевич-Александрович), иностранные варианты или ошибки ввода (Ивановна у мужчины). А ещё есть 187 официально зарегистрированных в России отчеств, которые не подчиняются стандартным правилам — например, Саввична (женское отчество от имени Савва) или Лукьянович (мужское с мягким знаком).

В этой статье мы разберём не только базовые формулы для определения пола, но и учтём все эти нюансы. Вы узнаете, как:

  • 🔹 Использовать ПРАВСИМВ и ПОИСК для простых случаев
  • 🔹 Обрабатывать исключения с помощью ВПР или XLOOKUP
  • 🔹 Автоматизировать процесс с Power Query для больших баз
  • 🔹 Проверять данные на ошибки перед анализом

Все примеры адаптированы для Excel 2016–2023 и Microsoft 365, но большинство формул будут работать и в Google Таблицах. Готовые шаблоны можно скачать в конце статьи.

📊 Как часто вам приходится определять пол по ФИО в работе?
Ежедневно
Раз в неделю
Редко
Никогда

Способ 1: Базовая формула с ПРАВСИМВ и ЕСЛИ

Для 80% случаев хватит простой проверки последних букв отчества. Формула выглядит так:

=ЕСЛИ(ИЛИ(ПРАВСИМВ(B2;3)="вич"; ПРАВСИМВ(B2;4)="ич"); "М"; ЕСЛИ(ИЛИ(ПРАВСИМВ(B2;3)="вна"; ПРАВСИМВ(B2;4)="на"); "Ж"; "Ошибка"))

Где B2 — ячейка с отчеством. Логика:

  • 🔍 Ищем окончания «вич» или «ич»** (например, Ильич)
  • 🔍 Для женского пола — «вна» или «на» (например, Александровна или Никитична)
  • ❌ Если не подходит ни под одно правило — выводим «Ошибка»**
⚠️ Внимание: Эта формула не учитывает отчества с мягким знаком в середине (например, Лукьянович) и иностранные варианты. Для них потребуется расширенный подход.

Чтобы формула работала корректно, убедитесь, что:

Удалите пробелы в начале/конце отчеств (функция СЖПРОБЕЛЫ)

Приведите текст к нижнему регистру (НИЖНРЕГ) или верхнему (ВЕРХНРЕГ)

Проверьте отсутствие опечаток (например, "Ивановна" у мужчины)

Удалите двойные отчества или оставьте только последнее слово-->

Способ 2: Учёт исключений с помощью ВПР или XLOOKUP

Для обработки нестандартных отчеств создайте отдельный справочник с исключениями. Например:

ОтчествоПол
СаввичнаЖ
ЛукьяновичМ
ИльиничнаЖ
НикитичМ
КузьминичнаЖ

Теперь модифицируем формулу:

=ЕСЛИОШИБКА(ВПР(B2; Исключения!A:B; 2; ЛОЖЬ);

ЕСЛИ(ИЛИ(ПРАВСИМВ(B2;3)="вич"; ПРАВСИМВ(B2;4)="ич"); "М";

ЕСЛИ(ИЛИ(ПРАВСИМВ(B2;3)="вна"; ПРАВСИМВ(B2;4)="на"); "Ж"; "Ошибка")))

Альтернатива для Excel 365:

=ЕСЛИНА(XLOOKUP(B2; Исключения!A:A; Исключения!B:B;;

ЕСЛИ(ИЛИ(ПРАВСИМВ(B2;3)="вич"; ПРАВСИМВ(B2;4)="ич"); "М";

ЕСЛИ(ИЛИ(ПРАВСИМВ(B2;3)="вна"; ПРАВСИМВ(B2;4)="на"); "Ж"; "Ошибка"))))

Где разместить справочник? Лучше на отдельном листе Исключения или в именованном диапазоне. Обновляйте его по мере обнаружения новых нестандартных отчеств.

Способ 3: Регулярные выражения (для Power Query)

Если вы работаете с большими объёмами данных, лучше перенести логику в Power Query. Это позволит:

  • 🔄 Обрабатывать миллионы строк без тормозов
  • 🔧 Гибко настраивать правила через регулярные выражения
  • 📥 Автоматически обновлять данные при изменении источника

Алгоритм:

  1. Импортируйте данные в Power Query (Данные → Получить данные → Из таблицы/диапазона)
  2. Добавьте пользовательский столбец с формулой:
    if Text.EndsWith([Отчество], "вич") or Text.EndsWith([Отчество], "ич") then "М"
    

    else if Text.EndsWith([Отчество], "вна") or Text.EndsWith([Отчество], "на") then "Ж"

    else "Ошибка"

  3. Для исключений используйте Table.AddColumn с List.Contains

Пример кода для Power Query с учётом исключений:

let

Источник = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],

Исключения = {"Саввична", "Лукьянович", "Ильинична"},

ДобавитьПол = Table.AddColumn(Источник, "Пол", each

if List.Contains(Исключения, [Отчество]) then

if [Отчество] = "Лукьянович" then "М" else "Ж"

else if Text.EndsWith([Отчество], "вич") or Text.EndsWith([Отчество], "ич") then "М"

else if Text.EndsAny([Отчество], {"вна", "на"}) then "Ж"

else "Ошибка")

in

ДобавитьПол

Как обработать двойные отчества?

Для отчеств типа "Сергеевич-Александрович" можно:

1. Разбить строку по дефису (Text.Split([Отчество], "-""))

2. Взять последнюю часть (List.Last)

3. Применить стандартные правила к этой части

Пример кода:

let последняяЧасть = List.Last(Text.Split([Отчество], "-")) in

if Text.EndsWith(последняяЧасть, "вич") then "М" else ...

Способ 4: Использование VBA для сложных случаев

Если вам нужно обработать тысячи строк с множеством исключений, лучше написать макрос. Пример кода:

Function ОпределитьПол(Отчество As String) As String

Dim МужскиеОкончания, ЖенскиеОкончания, ИсключенияМ, ИсключенияЖ

МужскиеОкончания = Array("вич", "ич")

ЖенскиеОкончания = Array("вна", "на")

ИсключенияМ = Array("Лукьянович", "Никитич")

ИсключенияЖ = Array("Саввична", "Ильинична")

' Проверяем исключения

If Not IsError(Application.Match(Отчество, ИсключенияМ, 0)) Then

ОпределитьПол = "М"

Exit Function

ElseIf Not IsError(Application.Match(Отчество, ИсключенияЖ, 0)) Then

ОпределитьПол = "Ж"

Exit Function

End If

' Проверяем стандартные окончания

For Each окончание In МужскиеОкончания

If Right(Отчество, Len(окончание)) = окончание Then

ОпределитьПол = "М"

Exit Function

End If

Next

For Each окончание In ЖенскиеОкончания

If Right(Отчество, Len(окончание)) = окончание Then

ОпределитьПол = "Ж"

Exit Function

End If

Next

ОпределитьПол = "Ошибка"

End Function

Как использовать:

  1. Нажмите Alt + F11, чтобы открыть редактор VBA
  2. Вставьте код в новый модуль (Insert → Module)
  3. В ячейке Excel используйте формулу =ОпределитьПол(B2)
⚠️ Внимание: Макросы работают только в файлах с расширением .xlsm. Если вы сохраните файл как .xlsx, код VBA будет удалён!

Способ 5: Онлайн-сервисы и API для массовой обработки

Если вам нужно определить пол для десятков тысяч записей и нет времени на настройку формул, можно использовать специализированные сервисы:

  • 🌐 Genderize.io — API для определения пола по имени (поддерживает русские ФИО)
  • 🌐 Agify.io — дополнительно оценивает возраст
  • 🌐 Gender-API — платный сервис с высокой точностью

Пример запроса к Genderize.io (можно выполнить через Power Query):

https://api.genderize.io?name=Иванович&country_id=RU

Ответ будет в формате JSON:

{

"name": "Иванович",

"gender": "male",

"probability": 1.0,

"count": 1245

}

Чтобы автоматизировать процесс:

  1. Используйте WEBSERVICE и FILTERXML в Excel 365
  2. Или настройте импорт через Power Query с параметром Web.Page

Проверка результатов и обработка ошибок

Даже самая продвинутая формула даст сбои на реальных данных. Чтобы минимизировать ошибки:

  1. Проверьте распределение полов:
    =СЧЁТЕСЛИ(C:C; "М") / СЧЁТЗ(C:C)

    Если мужчин >60% или женщин >60%, возможно, формула работает некорректно.

  2. Выделите сомнительные случаи:
    =ЕСЛИ(И(ДЛСТР(B2)<5; C2="Ошибка"); "Проверьте"; "")

    Это найдёт слишком короткие отчества, помеченные как ошибка.

  3. Сравните с другими источниками:

    Если у вас есть столбец с именами, используйте Genderize.io для кросс-проверки.

Типичные ошибки и их причины:

ОшибкаВозможная причинаРешение
Отчество "Ивановна" → "М"Опечатка в данных (должно быть "Иванович")Добавьте проверку на ПОИСК("овна"; B2)
"Лукьянович" → "Ошибка"Отсутствует в списке исключенийДобавьте в справочник исключений
Пустая ячейка → "#ЗНАЧ!"Формула не обрабатывает пустые значенияОберните в ЕСЛИ(Б2=""; ""; ваша_формула)
Двойное отчество → "Ошибка"Формула не разбивает строку по дефисуИспользуйте ПСТР и НАЙТИ для извлечения последней части

FAQ: Частые вопросы по определению пола в Excel

Можно ли определить пол только по имени, без отчества?

Да, но точность будет ниже. Например, Александр — почти всегда мужское имя, а Валерий/Валерия — унисекс. Для русских имён можно использовать справочник популярных имён по полу (например, от Росстата). Формула:

=ВПР(A2; СписокИмён!A:B; 2; ЛОЖЬ)

Где СписокИмён — таблица с двумя столбцами: имя и пол.

Как обработать иностранные отчества (например, "Оглы", "Кызы")?

Для тюркских отчеств (Оглы — мужское, Кызы — женское) добавьте в формулу дополнительные проверки:

=ЕСЛИ(ПРАВСИМВ(B2;4)="оглы"; "М";

ЕСЛИ(ПРАВСИМВ(B2;4)="кызы"; "Ж"; ...))

Полный список тюркских отчеств можно найти в Википедии.

Почему формула выдаёт "Ошибка" для отчества "Никитич"?

Потому что Никитич — мужское отчество, но заканчивается на «ич»** (как и Ильич). Ваша формула должна учитывать это как исключение. Добавьте в справочник:

ОтчествоПол
НикитичМ
Как автоматически обновлять пол при изменении отчества?

Используйте динамические массивы (Excel 365) или таблицы Excel:

  1. Преобразуйте диапазон в таблицу (Ctrl + T)
  2. В столбце "Пол" введите формулу один раз — она автоматически скопируется на все строки
  3. При изменении отчества пол пересчитается автоматически

Для VBA можно использовать событие Worksheet_Change:

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, Range("B:B")) Is Nothing Then

Application.EnableEvents = False

Range("C:C").Calculate

Application.EnableEvents = True

End If

End Sub

Где скачать готовый шаблон Excel с формулами?

Вы можете скачать наш шаблон по ссылке:

📥 Скачать шаблон определения пола по отчеству

В шаблоне:

  • 📊 3 листа с разными методами (формулы, Power Query, VBA)
  • 📋 Справочник исключений на 200+ отчеств
  • 🛠 Инструкция по настройке под ваши данные