Как автоматически перевести ФИО в родительный падеж в Excel: от формул до VBA

Склонение фамилий, имён и отчеств (ФИО) в родительный падеж — типичная задача для кадровых документов, договоров, справок и отчётов. Вручную изменять сотни записей неэффективно, а ошибки в склонении (особенно для иностранных фамилий или редких окончаний) могут испортить официальный документ. К счастью, в Microsoft Excel есть несколько способов автоматизировать этот процесс — от простых формул до сложных скриптов на VBA.

Многие пользователи ошибочно полагают, что для склонения ФИО обязательно нужен внешний сервис или дорогостоящее ПО. На самом деле, даже стандартные функции Excel (например, ПОИСК, ПСТР и ЕСЛИ) позволяют решить задачу для 80% русских фамилий. А если требуется 100% точность — поможет комбинация Power Query и бесплатных API. В этой статье разберём все методы — от самого простого до профессионального, — а также расскажем, как избежать типичных ошибок при склонении.

———

1. Почему ручное склонение ФИО — плохая идея

Даже в небольшой базе данных из 50 сотрудников ручное изменение ФИО в родительный падеж займёт минимум 30–40 минут. При этом риск ошибок остаётся высоким:

  • 🔹 Неправильные окончания: "Иванова" → "Иванову" вместо "Ивановой", "Сидоренко" → "Сидоренка" вместо "Сидоренко".
  • 🔹 Иностранные фамилии: склонение фамилий на "-ов", "-ин", "-ский" часто нарушает правила русского языка (например, фамилии из бывших союзных республик).
  • 🔹 Двойные фамилии: "Петрова-Иванова" требует склонения обеих частей, что легко упустить.

Кроме того, при обновлении базы данных (например, при добавлении новых сотрудников) придётся повторять процесс заново. Автоматизация же позволяет один раз настроить систему и пользоваться ей годами.

———

2. Способ 1: Формулы Excel для склонения русских фамилий

Если вам нужно склонять только русские фамилии с стандартными окончаниями, можно обойтись без внешних инструментов. Достаточно использовать комбинацию функций ПРАВСИМВ, ЛЕВСИМВ, ПСТР и ЕСЛИ.

Пример формулы для фамилий на "-ов", "-ев", "-ин", "-ын":

=ЕСЛИ(

ИЛИ(

ПРАВСИМВ(A2;2)="ов";

ПРАВСИМВ(A2;2)="ев";

ПРАВСИМВ(A2;2)="ин";

ПРАВСИМВ(A2;2)="ын"

);

ЛЕВСИМВ(A2;ДЛСТР(A2)-2) & "а";

ЕСЛИ(

ПРАВСИМВ(A2;1)="а";

ЛЕВСИМВ(A2;ДЛСТР(A2)-1) & "ой";

ЕСЛИ(

ПРАВСИМВ(A2;1)="я";

ЛЕВСИМВ(A2;ДЛСТР(A2)-1) & "ей";

A2 & " (не склоняется)"

)

)

)

Эта формула покрывает около 60% случаев, но не работает для:

  • 🔸 Фамилий на "-ий" (например, "Голиков" → "Голикова", а не "Голикий").
  • 🔸 Украинских фамилий на "-ко" (например, "Шевченко" не склоняется).
  • 🔸 Двойных фамилий (например, "Мамин-Сибиряк").

———

3. Способ 2: Готовые шаблоны с VBA для точного склонения

Для 100% точности склонения придётся использовать VBA (Visual Basic for Applications). Ниже приведён код, который обращается к внешнему API склонения (например, DaData или Клеверенс). Этот метод подходит для коммерческих проектов, где важна безошибочность.

Шаги для настройки:

  1. Откройте редактор VBA: нажмите Alt + F11.
  2. Вставьте новый модуль: Insert → Module.
  3. Скопируйте код ниже.
Function DeclineFIO(ByVal fio As String, ByVal caseType As String) As String

Dim http As Object

Dim url As String

Dim apiKey As String

Dim response As String

' Замените на ваш API-ключ (например, от DaData)

apiKey = "ВАШ_API_КЛЮЧ"

url = "https://cleaner.dadata.ru/api/v1/clean/name"

Set http = CreateObject("MSXML2.XMLHTTP")

http.Open "POST", url, False

http.setRequestHeader "Content-Type", "application/json"

http.setRequestHeader "Authorization", "Token " & apiKey

http.send "[[""" & fio & """]]"

response = http.responseText

' Парсинг ответа (упрощённо)

DeclineFIO = Split(Split(response, """genitive"":")(1), """")(2)

End Function

После вставки кода в Excel можно использовать функцию =DeclineFIO(A2; "genitive"), где A2 — ячейка с ФИО.

Зарегистрируйтесь на DaData и получите API-ключ|Включите макросы в Excel (Файл → Параметры → Центр управления безопасностью → Параметры центра управления безопасностью → Включить все макросы)|Проверьте подключение к интернету (API работает онлайн)|Сохраните файл как .xlsm (с поддержкой макросов)

-->

⚠️

Внимание: Бесплатный тариф DaData ограничен 10 000 запросами в месяц. Для больших баз данных (свыше 1 000 записей) рассмотрите платные тарифы или локальные решения (например, библиотеку pymorphy2 для Python).

———

4. Способ 3: Power Query для пакетного склонения

Power Query (в Excel 2016 и новее) позволяет подключаться к внешним источникам данных, включая API склонения. Преимущество этого метода — возможность обработать тысячи записей за несколько минут без написания кода.

Инструкция:

  1. Выделите столбец с ФИО и нажмите Данные → Из таблицы/диапазона.
  2. В редакторе Power Query выберите Добавить столбец → Пользовательский столбец.
  3. Введите формулу для вызова API (пример для DaData):
    = Json.Document(Web.Contents(
    

    "https://cleaner.dadata.ru/api/v1/clean/name",

    [

    Headers = [

    #"Content-Type" = "application/json",

    #"Authorization" = "Token ВАШ_API_КЛЮЧ"

    ],

    Content = Text.ToBinary("[""" & [Column1] & """]")

    ]

    ))[result]{0}[genitive]

  4. Нажмите Закрыть и загрузить.

Результат появится в новом столбце. Этот метод подходит для одноразовой обработки больших объёмов данных.

Как ускорить обработку в Power Query?

Используйте параметр ManualStatusHandling = {400, 404, 500} в функции Web.Contents, чтобы игнорировать временные ошибки API. Также можно разбить данные на части (по 500 строк) и обрабатывать их параллельно в нескольких запросах.

———

5. Способ 4: Онлайн-сервисы для склонения (без Excel)

Если вам нужно склонировать ФИО единожды и не хочется настраивать Excel, можно воспользоваться бесплатными онлайн-сервисами:

  • 🌐 Sklonenie.ru — склоняет по правилам русского языка, поддерживает двойные фамилии.
  • 🌐 Text.ru — инструмент для копирайтеров, но подходит и для ФИО.
  • 🌐 Morpher.ru — API для разработчиков, но есть демо-версия на сайте.

Алгоритм работы:

  1. Скопируйте список ФИО из Excel.
  2. Вставьте в поле сервиса (по одному или пакетом, если поддерживается).
  3. Скопируйте результат обратно в Excel.

⚠️

Внимание: Онлайн-сервисы могут сохранять введённые данные для улучшения алгоритмов. Не используйте их для конфиденциальной информации (например, ФИО клиентов банка или пациентов клиники).

———

6. Способ 5: Локальные решения (Python + Excel)

Для IT-специалистов или пользователей, работающих с большими данными, оптимальный вариант — использование Python с библиотекой pymorphy2. Этот метод не требует интернета и работает полностью offline.

Шаги:

  1. Установите Python и библиотеки:
    pip install pymorphy2 pandas openpyxl
  2. Создайте скрипт decline_fio.py:
    import pandas as pd
    

    from pymorphy2 import MorphAnalyzer

    morph = MorphAnalyzer()

    def decline_to_genitive(fio):

    words = fio.split()

    declined = []

    for word in words:

    parsed = morph.parse(word)[0]

    declined.append(parsed.inflect({'gent'}).word)

    return ' '.join(declined)

    Чтение Excel

    df = pd.read_excel('input.xlsx')

    df['Генитив'] = df['ФИО'].apply(decline_to_genitive)

    df.to_excel('output.xlsx', index=False)

  3. Запустите скрипт: python decline_fio.py.

Результат будет сохранён в файл output.xlsx с новым столбцом "Генитив".

Формулы Excel|VBA и API|Power Query|Онлайн-сервисы|Python|Другой способ-->

———

7. Типичные ошибки и как их избежать

Даже при автоматизации склонения пользователи сталкиваются с проблемами. Вот самые распространённые:

Ошибка Причина Решение
Не склоняются иностранные фамилии API или формула не распознаёт окончания Используйте сервисы с поддержкой транслитерации (например, DaData)
Ошибка "#ЗНАЧ!" в VBA Некорректный API-ключ или формат запроса Проверьте ключ и структуру JSON в http.send
Медленная обработка в Power Query Слишком много запросов к API Разбейте данные на части или используйте кеширование
Неправильное склонение "Иванов" → "Иванова" Ошибка в логике формулы Добавьте исключения для фамилий на "-ов" с помощью ЕСЛИ

———

8. FAQ: Частые вопросы по склонению ФИО в Excel

Можно ли склонять ФИО без интернета?

Да, но с ограничениями:

  • 📌 Формулы Excel работают offline, но покрывают только стандартные случаи.
  • 📌 Python + pymorphy2 — полностью офлайн-решение, но требует установки.

Для 100% точности без интернета потребуется локальная база правил склонения (например, словарь в формате JSON).

Как склонять двойные фамилии (например, "Петрова-Иванова")?

Двойные фамилии склоняются по правилам русского языка: изменяются обе части. Пример:

  • 📛 "Петрова-Иванова" → "Петровой-Ивановой"
  • 📛 "Смирнов-Ткаченко" → "Смирнова-Ткаченко" (вторая часть не склоняется, так как украинская).

Для автоматизации используйте API DaData или Morpher.ru — они корректно обрабатывают такие случаи.

Сколько стоит склонение ФИО через API?

Цены на популярные сервисы (на 2026 год):

  • 💰 DaData: 0,01₽ за запрос (бесплатно до 10 000 запросов/месяц).
  • 💰 Клеверенс: от 5 000₽/месяц за корпоративный тариф.
  • 💰 Morpher.ru: бесплатно для некоммерческого использования.

Для разовой задачи (до 1 000 ФИО) хватит бесплатного тарифа.

Как проверить правильность склонения?

Используйте официальные источники:

  • 📖 Грамота.ру — проверка по словарям.
  • 📖 Розенталь Д.Э. "Справочник по правописанию и литературной правке".
  • 📖 Для иностранных фамилий — консультируйтесь с носителями языка.

Можно ли склонять ФИО в Google Таблицах?

Да, но с ограничениями:

  • 📊 Формулы аналогичны Excel, но без VBA.
  • 📊 Для API-запросов используйте функцию =IMPORTDATA или скрипты Google Apps Script.
  • 📊 Пример кода для Apps Script:
    function declineFIO(fio) {
    

    const url = "https://cleaner.dadata.ru/api/v1/clean/name";

    const apiKey = "ВАШ_API_КЛЮЧ";

    const options = {

    method: "post",

    headers: {

    "Content-Type": "application/json",

    "Authorization": "Token " + apiKey

    },

    payload: JSON.stringify([fio])

    };

    const response = UrlFetchApp.fetch(url, options);

    const data = JSON.parse(response.getContentText());

    return data.result[0].genitive;

    }