Макросы склонения по падежам в excel

ГЛАВНАЯ

ТРЕНИНГИ

   Быстрый старт
   Расширенный Excel
   Мастер Формул
   Прогнозирование
   Визуализация
   Макросы на VBA

КНИГИ

   Готовые решения
   Мастер Формул
   Скульптор данных

ВИДЕОУРОКИ

ПРИЕМЫ

   Бизнес-анализ
   Выпадающие списки
   Даты и время
   Диаграммы
   Диапазоны
   Дубликаты
   Защита данных
   Интернет, email
   Книги, листы
   Макросы
   Сводные таблицы
   Текст
   Форматирование
   Функции
   Всякое
PLEX

   Коротко
   Подробно
   Версии
   Вопрос-Ответ
   Скачать
   Купить

ПРОЕКТЫ

ОНЛАЙН-КУРСЫ

ФОРУМ

   Excel
   Работа
   PLEX

© Николай Павлов, Planetaexcel, 2006-2022
info@planetaexcel.ru


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

Техническая поддержка сайта

ООО «Планета Эксел»

ИНН 7735603520


ОГРН 1147746834949
        ИП Павлов Николай Владимирович
        ИНН 633015842586
        ОГРНИП 310633031600071 

  • Перевод в именительный падеж в Excel
  • Перевод из начальной формы в другие падежи
  • Макросы склонения по падежам в Excel
    • Склонение существительных
    • Склонение прилагательных
    • Склонение чисел (имен числительных)
  • Склонение ФИО в Excel
    • Склонение ФИО в родительный падеж
    • Склонение ФИО в дательный падеж
    • Склонение ФИО в винительный падеж
    • Остальные падежи
  • Просклонять фразы целиком
    • Склонение списка услуг (пример)
    • Склонение должностей в Excel (пример)

Реализовать изменение падежей в экселе — одна из самых сложных задач для разработки, поскольку в русском языке масса правил склонения, окончаний, чередующихся гласных и прочих исключений из общих правил.

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

Тем более сложно представить себе бесплатное решение. Я разрабатывал алгоритм в своей надстройке с нуля и самостоятельно, опираясь на разные открытые источники данных по морфологии русского языка, и разработка заняла несколько месяцев, после чего я всё еще периодически произвожу улучшения своего алгоритма и исправление ошибок.

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

Что ж, расскажу подробнее.

Перевод слов в Excel в именительный падеж — часть процесса лемматизации. Лемматизация в Excel также поддерживается моей надстройкой, но здесь речь не о ней, а об обратном процессе — склонении начальной формы в остальные.

Перевод из начальной формы в другие падежи

Периодически специалистам, чья деятельность связана с написанием большого количества текстов — SEO/PPC специалистам, контент-менеджерам, администраторам баз данных и каталогов, копирайтерам и т.д. — бывает нужна возможность просклонять слова по падежам.

Мечта таких специалистов (знаю, т.к. выполнял похожие задачи) — поменять падеж ФИО, ключевых слов или товарных позиций прямо в Excel с помощью простых функций или процедур.

И надстройка !SEMTools дает такую возможность!

Надстройка совместима с Excel 2010, 2013, 2016, 2019, 2021 и Excel 365 на ОС Windows.

Процедуры можно потестировать в бесплатной версии, но присутствует ограничение — обрабатываются только часть исходных данных, треть данных заменяется дисклеймером «Доступно в полной версии».

Макросы склонения по падежам в Excel

Полная версия надстройки обрабатывает 100% данных. Процедуры можно вызывать с помощью меню «Изменить слова» в группе «ИЗМЕНИТЬ».

процедуры склонения по падежам в надстройке для Excel !SEMTools

Для корректной работы слова должны быть в начальной форме — именительном падеже.

Посмотрите видео демонстрацию работы процедур ниже:

ВАЖНО: процедуры склонения не знают, какие части речи им дали на вход, и смотрят только на окончания, склоняя все слова в ячейке как существительные или прилагательные в именительном падеже. Исключение – процедуры склонения фраз.

Склонение существительных

Число Доступные словоформы для склонения
Единственное Единственное число: родительный, дательный, винительный, творительный, предложный
Множественное число: именительный, родительный, дательный, винительный, творительный, предложный
Множественное Родительный, дательный, винительный, творительный, предложный — любой вариант

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

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

Склонение прилагательных

Аналогично склонению существительных, надстройка может генерировать любые словоформы для леммы

Форма Отвечает на вопрос Доступные словоформы для склонения
Лемма (единственное число, именительный падеж, мужской род) Какой? Все остальные из 36 словоформ, кроме исходной:
3 рода (мужской, женский, средний) *
2 числа (единственное, множественное) *
6 падежей (именительный, родительный, дательный, винительный, творительный, предложный)
Именительный падеж, женский род Какая? 11 падежей женского рода:
Единственное число: родительный, дательный, винительный, творительный, предложный
Множественное число: именительный, родительный, дательный, винительный, творительный, предложный
Именительный падеж, средний род Какое? 11 падежей среднего рода:
Единственное число: родительный, дательный, винительный, творительный, предложный
Множественное число: именительный, родительный, дательный, винительный, творительный, предложный

Склонение чисел (имен числительных)

Числительные при склонении меняют не только окончания, но и меняются в середине. Алгоритм разработки решения, которое учитывало бы все вариации, довольно сложен и пестрит множеством условий. Надстройка решает и эту задачу. Особенно здорово функции выглядят в сочетании с функционалом число прописью, смотрите пример:

На примере ниже показано склонение обычных числительных. Используется макрос склонения существительных в единственном числе. При этом, если числительные созвучны с прилагательными (например, «тридцать четвёртая»), нужно использовать макросы склонения прилагательных.

число прописью и склонение чисел

Склонение числительных в Excel

Склонение ФИО в Excel

Склонение ФИО отличается от обычного склонения слов по падежам и имеет ряд особенностей:

  • Склонение фамилий зависит от рода имени-отчества — армянские фамилии и фамилии, созвучные с нарицательными существительными, не склоняются для женщин (Абрамян Аревик Альбертовны);
  • При этом они склоняются для мужчин (Хачатуряна Артура Сергеевича);
  • Фамилии склоняются как прилагательные, но в некоторых падежах — иначе
  • Есть ряд исключений в склонении женских имен, например, Любовь — Любови (а не Любви);
  • Есть огромное количество несклоняемых мужских и женских имен, заканчивающихся на те же сочетания букв, что и склоняемые (Эрик склоняется, Аревик — нет);
  • И даже есть имена (например, Адель), являющиеся одновременно и мужскими и женскими, и склоняющиеся по-разному в зависимости от этого.

Реализовать функцию или макрос, которые бы идеально обрабатывали эти кейсы, невероятно сложно. Но все эти проблемы были решены при разработке специальных макросов склонения фамилий-имен-отчеств в !SEMTools.

Корректность работы была проверена на базе в 350.000 ФИО. Для корректной работы список ФИО должен содержать как фамилии, так имена и отчества в их полных формах в именительном падеже. Ниже примеры использования:

Склонение ФИО в родительный падеж

Когда нужно написать в шапке документа, от кого он, когда известна только начальная форма. Пример ниже:

Склонение ФИО в родительном падеже

Склонение ФИО в родительном падеже

Склонение ФИО в дательный падеж

Частая история, когда нужно кому-нибудь что-нибудь выплатить. Полезная сопутствующая функция — сумма прописью с копейками в Excel.

Склонение ФИО в дательном падеже

Склонение ФИО в дательном падеже

Склонение ФИО в винительный падеж

Данная функция понадобится, когда нужно кого-нибудь наградить, перевести в другой отдел или назначить на новую должность.

Склонение ФИО в винительном падеже

Склонение ФИО в винительном падеже

Остальные падежи

Перевод ФИО из именительного в творительный и предложный падежи происходят абсолютно по тому же сценарию:

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

Просклонять фразы целиком

Эта новая опция появилась совсем недавно, и по праву делает !SEMTools лучшим решением для склонения слов по падежам, доступным на текущий момент. Ниже основные особенности инструмента, которые позволяют так сказать:

  • Склоняются по падежам и числам все слова фразы — прилагательные, существительные, местоимения и т.д.;
  • Род существительных и прилагательных сохраняется;
  • Слова склоняются в любом регистре и регистр слов сохраняется (3 варианта – нижний, первая буква заглавная, верхний);
  • Надстройка понимает контекст, в котором находится слово, и выбирает, склонять ли его в зависимости от этого (просклоняет «дверной проём», но не будет склонять «с дверной ручкой»);
  • Аббревиатуры не склоняются, за некоторыми общеизвестными исключениями.

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

Кому в первую очередь подойдет инструмент? Конечно же, вебмастерам и копирайтерам.

Склонение списка услуг (пример)

Списки товаров или услуг зачастую состоят далеко не из одного слова, и быстро склонять их для использования в текстах — сэкономить десятки часов времени на наполнение сайта полезным и при этом читабельным контентом. Смотрите пример со склонением услуг автосервиса:

Склонение списка услуг по падежам

Склонение списка услуг по падежам в Excel в пару кликов

Склонение должностей в Excel (пример)

Будет полезно офисным сотрудникам (делопроизводителям, бухгалтерам и др.). Здесь инструмент пригодится для склонения должностей, званий, специальностей и т.д. Смотрите пример со склонением всех ВУС (военно-учетных специальностей):

Хотите попробовать, как будет обработан ваш список фраз?
Установите !SEMTools и попробуйте воспользоваться функционалом!

Надстройка Morpher.xll выполняет следующие функции:

  • склонение по падежам фамилий, имен и отчеств на русском и украинском языках;
  • склонение по падежам должностей и произвольных названий на русском языке;
  • определение рода (пола) ФИО и произвольных словосочетаний;
  • формирование прописи денежных сумм (сто рублей 00 копеек) и чисел с произвольной единицей измерения (тридцать календарных дней, две целых три десятых процента);
  • получение формы множественного числа слов и словосочетаний;
  • сокращение ФИО до фамилии и инициалов.

Функции склонения по падежам

Надстройка расширяет возможности Excel, добавляя в него функции склонения,
соответствующие падежам русского и украинского языков:

Функция Вопрос Описание
Родительный кого? чего? Строит форму родительного падежа.
Дательный кому? чему? Строит форму дательного падежа.
Винительный кого? что? Строит форму винительного падежа.
Творительный кем? чем? Строит форму творительного падежа.
ПредложныйО о ком? о чем? Предложный падеж с предлогом О/ОБ/ОБО. *
ПредложныйВ где? Предложный падеж с предлогом В/НА. *

* См. Рекомендации по выбору варианта предложного падежа

Поддерживается также украинский язык:

Функція Питання Опис
Родовий кого? чого? Утворює форму родового відмінку
Давальний кому? чому? Утворює форму давального відмінку
Знахiдний кого? що? Утворює форму знахiдного відмінку
Орудний ким? чим? Утворює форму орудного відмінку
Мiсцевий на кому? на чому? Утворює форму мiсцевого відмінку без прийменника
Кличний Шановний… Утворює форму кличного відмінку

Например, если в ячейку A1 ввести «Иванов Иван Иванович», а в ячейку B1 – формулу =Дательный(A1),
то в ячейке B1 отобразится «Иванову Ивану Ивановичу».
При изменении имени в ячейке A1 ячейка B1 будет обновляться автоматически.

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

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

Формулы в Excel – универсальное средство, их можно использовать в макросах VBA, вывести на панель быстрого доступа в виде кнопок и т.п.
Все это легко делается средствами Excel.

Функция определения рода (пола)

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

Для русского языка функция называется Род и может возвращать одно из следующих строковых значений:

Функция Возвращаемые значения Означает
Род Муж Мужской род или пол
Жен Женский род или пол
Сред Средний род
Множ Множественное число

Для украинского языка соответствующая функция называется Рід:

Функція Повертає значення Означає
Рід Чол Чоловічий рід або стать
Жін Жіночий рід або стать
Сер Середній рід
Множ Множина

В случае если входное словосочетание не содержит русских (или украинских)
слов, результатом функции будет пустая ячейка.

Перевод во множественное число

Функция Множественное переводит слово или словосочетание во множественное число:

Формула Результат
=Множественное(«телевизор») телевизоры
=Множественное(«женская блузка») женские блузки
=Множественное(«набор для бритья») наборы для бритья

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

Сокращение ФИО до фамилии и инициалов

Допустим, у вас есть список фамилий, имен и отчеств в Excel, и вам нужно получить такой же список,
но имя и отчество заменить на инициалы.

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

Скопируйте и вставьте в колонку B1 формулу:

=CONCAT(LEFT(A1, SEARCH(" ", A1)), MID(A1, SEARCH(" ", A1), 2), ". ", MID(A1, SEARCH(" ", A1, SEARCH(" ", A1)+1)+1, 1), ".")

Находясь в ячейке B1, нажмите Ctrl-Shift-End, чтобы выделить всю колонку,
и затем Ctrl-D, чтобы заполнить колонку фамилиями с инициалами.

Функция прописи чисел и денежных сумм

Функция Пропись формирует пропись числа или денежной суммы в любом падеже:

Формула Результат
=Пропись(123,45; «рубль») Сто двадцать три рубля 45 копеек
=Пропись(123,45; «доллар США») Сто двадцать три доллара США 45 центов
=Пропись(123,45; «евро») Сто двадцать три евро 45 центов

При желании можно использовать сокращенные названия денежных единиц, с точкой или без:

Формула Результат
=Пропись(123,45; «руб.») Сто двадцать три руб. 45 коп.
=Пропись(123,45; «долл. США») Сто двадцать три долл. США 45 центов
=Пропись(123,45; «грн.») Сто двадцать три грн. 45 коп.

В качестве денежной единицы допускается также использование трехбуквенных кодов валют международного стандарта ISO 4217,
таких как RUB, USD, EUR и др. При этом в название денежной единицы автоматически включается название страны:

Формула Результат
=Пропись(123,45; «RUB») Сто двадцать три российских рубля 45 копеек
=Пропись(123,45; «UAH») Сто двадцать три украинских гривны 45 копеек
=Пропись(123,45; «KZT») Сто двадцать три казахских тенге 45 тиынов

См. также Полный список обозначений валют.

Кроме денежных единиц, возможно построить пропись числа в сочетании с произвольной единицей измерения, например:

Формула Результат
=Пропись(10; «рабочий день») 10 (Десять) рабочих дней
=Пропись(30; «календарный день») 30 (Тридцать) календарных дней
=Пропись(5,3; «процент») 5,3 (Пять целых три десятых) процента

Чтобы поставить результат в нужный падеж, укажите третьим параметром первую букву названия падежа
(И, Р, Д, В, Т, П):

Формула Результат
=Пропись(2; «рабочий день»; «Р») 2 (Двух) рабочих дней
=Пропись(2; «рабочий день»; «Д») 2 (Двум) рабочим дням
=Пропись(2; «рабочий день»; «П») 2 (Двух) рабочих днях

Например, чтобы сформировать фразу «В течение 30 (Тридцати) календарных дней», используйте формулу:

=CONCATENATE(«В течение «; Пропись(30; «календарный день»; «Р»))

Предупреждение ошибок в функции Пропись

При некоторых входных данных функция Пропись может выдавать ошибку. Ошибка выдается в ячейку с формулой в виде сообщения, начинающегося с «#ОШИБКА: … «

Ниже перечислены возможные ошибки и способы их предупреждения:

Слишком большое число. В целой части допустимо не более 30 значащих цифр.

=Пропись(1E+30; «единица»)

Вы передали в функцию слишком большое число.

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

Примечание: Указать «слишком маленькое» число невозможно.
Числа от 10 – 17 и меньше автоматически округляются до 0.

Третий аргумент (падеж) должен быть одной из букв: И, Р, Д, В, Т, П.

=Пропись(1; «единица»; «А»)

Вы передали в функцию неправильный идентификатор падежа.

Вставьте проверку на допустимость параметра.
Значения параметра должны быть заглавными русскими буквами и строго соответствовать списку.

Единица измерения нерусская или не имеет нужной падежной формы.

=Пропись(5; «edinitsa»)

=Пропись(5; «теля»)

=Пропись(5; «»)

Второй параметр либо пустой, либо не является русским словом, либо представляет собой слово, у которого нет нужной падежной формы.

Укажите правильную единицу измерения.

Слишком много цифр после запятой. Для большинства валют допустимо не более 2 цифр; для старых белорусских рублей (до деноминации 1 июля 2016 года) число должно быть целым.

=Пропись(1,234; «рубль»)

=Пропись(123,4; «BYR»)

Указанная денежная сумма содержит слишком много цифр после запятой.

Округлите сумму до нужного количества цифр. Почему функция Пропись не делает округление автоматически?
Потому что это могло бы привести к ошибкам округления.
Например, если 1 рубль поделить на троих и автоматически округлить результат до 0,33, то одна копейка потеряется:
0,33 * 3 = 0,99.

Вызов функций надстройки из макросов VBA

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

Sub Macro1()
    ActiveCell.Value = Application.Run("Родительный", ActiveCell.Value)
End Sub

Технические данные

  • Надстройка работает в Excel под управлением Windows.
  • Поддерживаемые версии Excel: 2003, 2007, 2010, 2013 (Office 365).
  • Размер файла 600K.
  • Morpher.XLL написана на C++ и интегрируется в Excel при помощи XLL API,
    что обеспечивает мгновенный пересчет ячеек с использованием всех ядер процессора.
    Это значит, что надстройка способна обрабатывать миллионные списки в считанные секунды.

А как же Mac (OS X)?

Надстройка работает только под Windows. Но ее можно запустить на Маc с помощью Parallels Desktop.
Это программа эмуляции Windows на Маc.

Инструкция по установке

Надстройка поставляется в трех вариантах:

  • Morpher.xll.2003.zip – для Excel 2003;
  • Morpher.xll.2007.zip – для Excel 2007 и более поздних версий, 32 бита;
  • Morpher.xll.x64.zip – для Excel 2007 и более поздних версий, 64 бита.

Узнать разрядность Excel можно, открыв «Диспетчер задач» (Task Manager):
если напротив Excel стоит пометка (32 bit), то это означает, что у вас 32-битная версия;
если такой пометки нет, то 64-битная.

Выберите zip-архив, соответствующей вашей версии Excel, и распакуйте из него единственный файл под названием Morpher.xll.
Поместите этот файл в любую папку на компьютере.
В дальнейшем Excel будет загружать надстройку из этой папки при каждом запуске.

Далее нужно открыть окно Надстройки (Add-Ins). Как это сделать, опять же зависит от версии Excel:

Окно надстроек

  • В Excel 2003, выберите в меню Сервис (Tools) пункт Надстройки (Add-Ins).
  • В Excel 2007-2013 это окно запрятано глубже:
    1. Нажмите круглую кнопку в левом-верхнем углу окна Excel или меню Файл (File) .
    2. Выберите слева Параметры (Options).
    3. В появившемся окне слева выберите категорию Надстройки (Add-Ins).
    4. Внизу окна нажмите кнопку Перейти (Go).

В окне Надстройки нажмите кнопку Обзор (Browse) и укажите путь к папке, где находится Morpher.xll.
Удостоверьтесь, что напротив Склонение (Morpher.xll) стоит галочка.
Нажмите OK.

Возможные проблемы при установке

Если вы получаете одно из следующих сообщений:

  • (в Excel 2003-2010) «Файл Morpher.xll не является надстройкой» (“Morpher.xll is not a valid add-in.”)
    при нажатии ОК в списке надстроек или
  • (в Excel 2013 / Office 365) «Формат файла Morpher.xll не соответствует расширению файла. Возможно, файл поврежден или небезопасен…»
    при старте Excel.

то это практически наверняка означает, что вы выбрали zip-файл, не соответствующий вашей версии или разрядности Excel.
Закройте Excel, распакуйте другой файл и повторите процедуру установки.

История изменений

Дата Версия Описание
09.02.2021 1.4.12.0 Этот релиз вобрал в себя множество изменений,
накопленных за полтора года работы:

  • Добавлено 752 фамилии из Википедии.
  • Добавлено 25 тысяч слов из русского Викисловаря.
  • Улучшено склонение несловарных ФИО, а также фамилий с дефисом (Тер-Оганесян, Кул-Мухаммед)
  • Функция склонения больше не заменяет латинские буквы на русские.
  • Функция Пропись теперь считает единицы измерения нарицательными.
  • Исправлено склонение контакт-центр, Илон Маск.
  • Исправлено склонение смартфон samsung galaxy j3 sm-j330f ds черный.
  • Исправлено склонение фамилии Краснящих в украинской функции.
  • Добавлено имя Рамін в украинский словарь.
  • Добавлено более 14600 новых слов
    (новое издание словаря Зализняка
    + пополнение словаря odict.ru).
  • Исправлено склонение ряда женских имен Ближнего Востока:
    Алмаз, Анушик, Алтнат и др.
  • Исправлена ошибка прописи числа 500 триллионов.
  • Исправлено склонение нестандартной фамилии Василив.
  • Исправлено склонение нестандартного топонима Уторгош,
    который склоняется и по мужскому, и по женскому типу:
    Малая Уторгош и Малый Уторгош.
  • Исправлено склонение имен Регіна, Альвіна, Фаїна в украинской версии.
  • Устранено аварийное завершение программы при вводе определенной последовательности символов
    (внутренние номера задач — 627, 669).
  • Слова в кавычках теперь не склоняются:
    Тариф «Бейсик», колбаса «Докторская», миноносец «Сметливый».
  • Учет сокращения вр.и.о.
26.07.2019 1.4.11.0 Исправлено склонение слов чаек — чайком и подобных (буек, Бабуек);
наречий отдельно, слегка, почти, совершенно;
узбекской денежной единицы тийин;
названия города Армавир;
словосочетания «Заместитель Председателя Правления».
Пополнение словаря.
19.12.2017 1.4.10.0 Пополнение словаря.
17.01.2017 1.4.8.0 В функции Пропись исправлена ошибка «ноль годов».
Добавлены копейки к белорусскому рублю в связи с его деноминацией.
Старый (до июня 2016 г.) белорусский рубль имеет обозначение BYR, новый — BYN.
Пропись BYR не содержит копеек, а BYN содержит.
16.01.2017 1.4.7.0 Пополнение словаря. В частности, исправлено склонение слова роялти.
15.01.2017 1.4.6.0 Исправлено склонение некоторых слов с дефисом, например: Нью-Йорк, Лос-Анджелес.
Ранее неправильно выдавался винительный падеж: Нью-Йорка, Лос-Анджелеса
вместо правильных Нью-Йорк, Лос-Анджелес.
26.05.2016 1.4.5.0 Исправлена ошибка в склонении отчества Олеговна.
19.04.2015 1.4.4.0 Исправлена ошибка в функции Пропись: вместо неправильного «5 годов» теперь выдается правильное «5 лет».
Ошибка касалась только единицы измерения «год» (это слово – исключение).
17.03.2015 1.4.3.0 Исправлена ошибка в функции Пропись. Ошибка проявлялась для сумм с числом копеек 0x. В результате выдавалось x0 копеек вместо 0x.
21.08.2014 1.4.1.0 Пополнение словарей. Исправлено склонение фамилии Ведмідь на украинском.
12.08.2014 1.4.0.0 Добавлена функция Множественное, позволяющая получить форму именительного падежа множественного числа слова или словосочетания.
07.01.2014 1.3.6.0 Добавлена функция ПредложныйО, возвращающая форму предложного падежа с предлогом О/ОБ/ОБО.
11.12.2013 1.3.5.0 Небольшое пополнение словаря (русского и украинского).

10.12.2013 ‏‎ 1.3.4.0 В украинский алгоритм добавлен учет «апострофов» вида Дерев”яна и Дерев»яна.
11.11.2013 ‏‎ 1.3.3.0 При указании более двух цифр после запятой в денежной сумме теперь выдается ошибка.
11.10.2013 ‏‎ 1.3.2.0 Исправлена ошибка, вызывавшая сбой Excel при склонении фразы «Складной массажный стол Vision Apollo I».
30.09.2013 ‏‎ 1.3.1.0 Добавлена возможность указания денежных единиц в сокращенном виде: руб, долл, грн, тнг.
25.09.2013 ‏‎ 1.3.0.0 Добавлена функция прописи денежных сумм и чисел на русском языке.
10.09.2013 ‏‎ 1.2.4.0 Уточнены некоторые формулировки в мастере функций. Нейтрализована известная ошибка в Excel,
в результате которой некоторые сообщения в мастере функций выводились не полностью
(Argument Description String Truncation in the Function Wizard).
5.09.2013 ‏‎ 1.2.3.0 Исправлена ошибка в названии категории функции Рід.
29.01.2013 ‏‎ 1.2.2.0 Исправлены ошибки в склонении, указанные пользователями.
Добавлены правила для учета несклоняемых украинских фамилий на -ИХ (Грицьких).
28.01.2013 ‏‎ 1.2.1.0 Исправлены ошибки в склонении, указанные пользователями.
Учет двух видов апострофов в украинских словах, например,

Марянович и Марянович.
‎03.01.2013 ‏‎ 1.2.0.0 Добавлена функция определения рода (пола) для русского и украинского языков.
‎25.11.‎2012 ‏‎ 1.1.0.0 Добавлены функции склонения ФИО на украинском языке.
‎20.12.‎2011 ‏‎ 1.0.0.2 Добавлена возможность склонения данных из нескольких ячеек.

Купить Morpher.xll

Приобрести надстройку можно следующими способами:

  Онлайн Договор + безнал Магазин Allsoft.ru
Документы Чек Договор, счет и акт — сканы и почтой. Закрывающие документы предоставляет магазин.
Срок доставки Скачивание сразу после оплаты. 2 рабочих дня с даты оплаты счета (обычно в тот же день). 2 рабочих дня с даты оплаты счета.
Поддержка Консультации по email. Консультации по email и телефону. Консультации по email и телефону.
Гарантия Гарантируем соответствие продукта описанию. Гарантируем отсутствие сбоев в программе. Гарантируем отсутствие сбоев в программе.
Обновления 5 лет (в соответствии с договором) 5 лет
Цена 3900 руб.

за одно рабочее место
Цена зависит от количества рабочих мест
и срока лицензии.
Свяжитесь с нами для
получения ком. предложения:
Цена указана на сайте магазина.

Заказать на Allsoft.ru


Возврат предоставляется в случае несоответствия продукта описанию на данной странице.

Morpher.XLL входит в линейку продуктов автоматического склонения,
включающую также модули для
.NET,
Delphi,
SQL Server
и бесплатный
веб-сервис.

 

Пользовательская функция (UDF) для перевода ФИО (фамилии, имя, отчества) в дательный падеж.

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

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

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

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

которая позволит вам одним нажатием кнопки создать документы Word и Excel по шаблонам, а также выполнить рассылку писем.

В указанную надстройку включены самые последние версии функций склонения.

Пример использования:

Sub ПереводФИОвДательныйПадеж()
    ' если фамилия, имя и отчество - в одной переменной (или ячейке)
    FIO$ = "Сидоров Иван Скотиныч"
    ДательныйПадеж$ = DativeCase(FIO$)
    Debug.Print ДательныйПадеж$    ' результат: Сидорову Ивану Скотинычу

    ' если фамилия, имя и отчество - в разных переменных (или ячейках)
    Кому$ = DativeCase("Андреева", "Ольга", "Федоровна")
    Debug.Print Кому$    ' результат: Андреевой Ольге Федоровне
End Sub

Код функции DativeCase (новая версия, от 29 января 2013 года):

Option Compare Text    ' эта строка нужна обязательно! (сравнение без учёта регистра)

Function DativeCase(sSurname$, Optional sName$, Optional sPatronymic$) As String
    ' Функция формирует дательный падеж из ФИО
    ' Параметры: sSurname - фамилия, sName - имя, sPatronymic - отчество
    ' © 2013 EducatedFool

    Application.Volatile True    ' автопересчёт формулы на листе
    sSurname$ = Replace(sSurname$, " - ", "-"): sSurname$ = Replace(Replace(sSurname$, " -", "-"), "- ", "-")
 
    On Error Resume Next
    If sName$ = "" And sPatronymic$ = "" Then
        arr = Split(Application.Trim(sSurname$))
        sSurname$ = arr(0): sName$ = arr(1): sPatronymic$ = Replace(arr(2), ".", "")
    End If
 
    ' пол теперь определяется иначе:   что заканчивается на "вна" или "кызы" - то женщины, остальные - мужчины.
    Dim bMaleSex As Boolean:    ' bMaleSex = (Right(sPatronymic, 1) = "ч" Or Right(sPatronymic, 4) = "оглы")
    bMaleSex = Not (Right(sPatronymic, 2) = "на" Or Right(sPatronymic, 4) = "кызы")
 
    If Len(sSurname) > 0 Then    '   Фамилия
        arrSurname = Split(sSurname, "-")
        For i = LBound(arrSurname) To UBound(arrSurname)    ' перебираем все части фамилий, содержащих дефис
            sRes = "": sSurnamePart = arrSurname(i)
 
            If bMaleSex Then    ' мужские фамилии
                Select Case Right(sSurnamePart, 1)
                    Case "о", "и", "ы", "у", "э", "е", "ю": sRes = sSurnamePart
                    Case "ь", "й": sRes = Mid(sSurnamePart, 1, Len(sSurnamePart) - 1) & "ю"
                    Case "я", "а": sRes = Mid(sSurnamePart, 1, Len(sSurnamePart) - 1) & "е"
                        If UBound(arrSurname) > 0 And i = 0 Then sRes = sSurnamePart
                    Case Else: sRes = sSurnamePart & "у"
                End Select
 
                Select Case Right(sSurnamePart, 2)    ' добавлено, для редких фамилий
                    Case "ец": sRes = Mid(sSurnamePart, 1, Len(sSurnamePart) - 2) & "цу"
                        If LCase(sSurnamePart) Like "*[уеыаоэяиюё]ец" Then sRes = Mid(sSurnamePart, 1, Len(sSurnamePart) - 1) & "цу"
                        If LCase(sSurnamePart) Like "*[!уеыаоэяиюё][!уеыаоэяиюё]ец" Then sRes = sSurnamePart & "у"
                    Case "зе", "их", "ых": sRes = sSurnamePart
                    Case "ый": sRes = Mid(sSurnamePart, 1, Len(sSurnamePart) - 2) & "ому"
                    Case "ий", "ой": sRes = Mid(sSurnamePart, 1, Len(sSurnamePart) - 2) & "ому"
                        If Len(sSurnamePart) <= 4 Then sRes = Mid(sSurnamePart, 1, Len(sSurnamePart) - 1) & "ю"
                        If Right(sSurnamePart, 3) = "чий" Then sRes = Mid(sSurnamePart, 1, Len(sSurnamePart) - 2) & "ему"
                    Case "уй": sRes = Mid(sSurnamePart, 1, Len(sSurnamePart) - 2) & "ую"
                End Select
 
            Else    ' женские фамилии
                Select Case Right(sSurnamePart, 1)
                    Case "о", "е", "э", "и", "ы", "у", "ю", "б", "в", "г", "д", "ж", "з", "к", "л", "м", "н", "п", _
                         "р", "с", "т", "ф", "х", "ц", "ч", "ш", "щ", "ь", "й": sRes = sSurnamePart
                    Case "я": sRes = Mid(sSurnamePart, 1, Len(sSurnamePart) - 2) & "ой"
                    Case Else: sRes = Mid(sSurnamePart, 1, Len(sSurnamePart) - 1) & "ой"
                End Select
 
                Select Case Right(sSurnamePart, 2)    ' добавлено, для редких фамилий
                    Case "ха", "ла", "ее": sRes = Mid(sSurnamePart, 1, Len(sSurnamePart) - 1) & "е"
                End Select
 
            End If
 
            ' не склоняются мужские и женские фамилии, оканчивающиеся на -о, -е, -э, -и, -ы, -у, -ю,
            ' а также на -а с предшествующей гласной
            If LCase(sSurnamePart) Like "*[уеыаоэяиюё]а" Then sRes = sSurnamePart
 
            arrSurname(i) = sRes
        Next
        DativeCase = Join(arrSurname, "-") & " "    ' соединяем части склоняемой фамилии обратно в одну строку
    End If
 
    If Len(sName) > 0 Then    '   Имя
        NameException$ = GetDativeException(sName)
        If Len(NameException$) Then    ' для имен-исключений
            DativeCase = DativeCase & NameException$
        Else    ' имя не найдено в списке исключений
            If bMaleSex Then
                Select Case Right(sName, 1)
                    Case "й", "ь": DativeCase = DativeCase & Mid(sName, 1, Len(sName) - 1) & "ю"
                    Case "я", "а": DativeCase = DativeCase & Mid(sName, 1, Len(sName) - 1) & "е"
                    Case "о": DativeCase = DativeCase & sName
                    Case Else: DativeCase = DativeCase & sName & "у"
                End Select
            Else
                Select Case Right(sName, 1)
                    Case "а", "я"
                        If Mid(sName, Len(sName) - 1, 1) = "и" Then
                            DativeCase = DativeCase & Mid(sName, 1, Len(sName) - 1) & "и"
                        Else
                            DativeCase = DativeCase & Mid(sName, 1, Len(sName) - 1) & "е"
                        End If
                    Case "ь": DativeCase = DativeCase & Mid(sName, 1, Len(sName) - 1) & "и"
                    Case Else: DativeCase = DativeCase & sName
                End Select
            End If
        End If
        DativeCase = DativeCase & " "
    End If
 
    If Len(sPatronymic) > 0 Then    '   Отчество
        If Right(sPatronymic, 4) = "оглы" Or Right(sPatronymic, 4) = "кызы" Then
            DativeCase = DativeCase & sPatronymic
        Else
            If bMaleSex Then
                DativeCase = DativeCase & sPatronymic & "у"
            Else
                DativeCase = DativeCase & Mid(sPatronymic, 1, Len(sPatronymic) - 1) & "е"
            End If
        End If
    End If
    DativeCase = Replace(DativeCase, "-", "- ")
    DativeCase = StrConv(DativeCase, vbProperCase)
    DativeCase = Replace(DativeCase, "- ", "-")
End Function
Function GetDativeException(ByVal txt$) As String    ' склонение имён-исключений
    Select Case txt$
        Case "Павел": GetDativeException = "Павлу"
        Case "Лев": GetDativeException = "Льву"
        Case "Пётр": GetDativeException = "Петру"
 
            ' без изменения (не склоняются) - перечисляем через запятую
        Case "Али", "Бали": GetDativeException = txt$
    End Select
End Function
  • 102968 просмотров

Не получается применить макрос? Не удаётся изменить код под свои нужды?

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

Склонение ФИО по падежам

Пользовательские функции (формулы, UDF) для склонения ФИО (фамилии, имени, отчества) по падежам, доступные при использовании надстройки FillDocuments

Поддерживаются 4 падежа:

  • родительный падеж
  • дательный падеж
  • винительный падеж
  • творительный падеж

Все эти функции, а также много других, можно приобрести отдельно от программы FillDocuments,
в виде другой надстройки для Excel с открытым кодом

Функция (формула) Пример получаемого значения
=Родительный(E2) Андреевой Алёны Васильевны
=Дательный(E2) Андреевой Алёне Васильевне
=Винительный(E2) Андрееву Алёну Васильевну
=Творительный(E2) Андреевой Алёной Васильевной
Исходное значение в ячейке E2 Андреева Алёна Васильевна

Программе, для правильного склонения ФИО, нужно определить пол. Пол определяется по отчеству.
Потому, склонять фамилии с инициалами категорически не рекомендуется (могут возникнуть ошибки)

ВАЖНО: Эти функции применимы только к ФИО. Склонять ими должности, и прочие слова и фразы, не получится.

ВНИМАНИЕ: Если вместе со склонением, вы используете другие функции для ФИО (например, Инициалы из ФИО), то сначала применяйте функцию склонения, а потом уже, после изменения падежа, другую функцию.

Не сложно догадаться, для чего необходима функция =СКЛОНЕНИЕ(ТЕКСТ;ПАДЕЖ). Практически любое существительное или ФИО она переведет из именительного падежа в нужный падеж.

Подчеркну слово практически, так как имеются фамилии, которые без программы то сложно просклонять, но в 90% случаев макрос отрабатывает достойно. Проверяйте сложные или необычные фамилии дополнительно.

Формула имеет всего 2 аргумента:

Диалоговое окно функции СКЛОНЕНИЕ

  • ТЕКСТ — Существительное, имя, фамилия или отчество в именительном падеже, который необходимо просклонять. Вы также можете использовать несколько слов в качестве аргумента. Например, указать полностью ФИО.
  • ПАДЕЖ — Числовое значение определяющее падеж:
  1. Именительный.
  2. Родительный.
  3. Дательный.
  4. Винительный.
  5. Творительный.
  6. Предложный.

Вот так выглядит стандартное окно ввода параметров функции СКЛОНЕНИЕ

Функция СКЛОНЕНИЕУКР

Аналогичная функция, которая склоняет ФИО и существительные, но только на украинском языке. Синтаксис у нее также не отличается =СКЛОНЕНИЕУКР(ТЕКСТ;ПАДЕЖ).

Далее приводятся примеры, наглядно демонстрирующие работу функции.

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

Примеры работы с текстовой функцией ЗАМЕНИТЬ в Excel

Функция ЗАМЕНИТЬ, входит в состав текстовых функций MS Excel и предназначена для замены конкретной области текстовой строки, в которой находится исходный текст на указанную строку текста (новый текст).

Как работает функция ЗАМЕНИТЬ в Excel?

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

Функция заменить в Excel и примеры ее использования

  1. Создадим на листе рабочей книги табличного процессора Excel табличку со словами, как показано на рисунке: табличка со словами.
  2. Далее на листе рабочей книги подготовим область для размещения нашего результата – полученного слова «молоток», как показано ниже на рисунке. Установим курсор в ячейке А6 и вызовем функцию ЗАМЕНИТЬ: ЗАМЕНИТЬ.
  3. Заполняем функцию аргументами, которые изображены на рисунке: Заполняем аргументами.

Выбор данных параметров поясним так: в качестве старого текста выбрали ячейку А2, в качестве нач_поз установили число 5, так как именно с пятой позиции слова «Молоко» мы символы не берем для нашего итогового слова, число_знаков установили равным 2, так как именно это число не учитывается в новом слове, в качестве нового текста установили функцию ПРАВСИМВ с параметрами ячейки А3 и взятием последних двух символов «ок».

Далее нажимаем на кнопку «ОК» и получаем результат:

получаем результат.

Как заменить часть текста в ячейке Excel?

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

  1. Создадим на листе рабочей книги Excel табличку со фамилией и именем, как показано на рисунке: табличка со фамилией и именем.
  2. Далее на этом же листе рабочей книги подготовим область для размещения нашего результата – измененных фамилий и имен. Заполним ячейки двумя типами формул как показано на рисунке: 2 типа формул.

Обратите внимание! Во второй формуле мы используем оператор «&» для добавления символа «а» к мужской фамилии, чтобы преобразовать ее в женскую. Для решения данной задачи можно было бы использовать функцию =СЦЕПИТЬ(B3;»а») вместо формулы =B3&»а» – результат идентичный. Но сегодня настоятельно рекомендуется отказываться от данной функции так как она имеет свои ограничения и более требовательна к ресурсам в сравнении с простым и удобным оператором амперсанд.

Трюк, который мы рассмотрим в данном разделе, удобно применять при работе со списками ФИО. С его помощью можно быстро переводить требуемые ФИО в родительный или дательный падеж. Чтобы достичь подобного эффекта, следует воспользоваться макросом, код которого приведен в листинге 3.82 (данный код записывается в стандартном модуле).

Листинг 3.82. Склонение ФИО

Public Sub PossessiveCase()

‘ Склоняем ФИО в родительный падеж

Dim strName1 As String, strName2 As String, strName3 As

String

strName1 = dhGetName(ActiveCell, 1) ‘ Выделяем имя

strName2 = dhGetName(ActiveCell, 2) ‘ Выделяем фамилию

strName3 = dhGetName(ActiveCell, 3) ‘ Выделяем отчество

‘ Если в ячейке менее трех слов – закрытие процедуры

If strName1 = «» Or strName2 = «» Or strName3 = «» Then Exit

Sub

‘ Склоняем

Cells(ActiveCell.Row, ActiveCell.Column) = dhPossessive( _

strName1, strName2, strName3)

End Sub

Public Sub DativeCase()

‘ Объявление переменных

Dim strName1 As String, strName2 As String, strName3 As

String

strName1 = dhGetName(ActiveCell, 1)

strName2 = dhGetName(ActiveCell, 2)

strName3 = dhGetName(ActiveCell, 3)

‘ Если в ячейке менее трех слов – закрытие процедуры

If Len(strName1) = 0 Or Len(strName2) = 0 Or Len(strName3) = 0 _

Then Exit Sub

Cells(ActiveCell.Row, ActiveCell.Column) = dhDative( _

strName1, strName2, strName3)

End Sub

Function dhPossessive(strName1 As String, strName2 As String, _

strName3 As String) As String

Dim fMan As Boolean

‘ Определяем, мужские ФИО или женские

fMan = (Right(strName3, 1) = «ч»)

‘ Склонение фамилии в родительный падеж

If Len(strName1) > 0 Then

If fMan Then

‘ Склонение мужской фамилии

Select Case Right(strName1, 1)

Case «о», «и», «я», «а»

dhPossess ive = strName1

Case «й»

dhPossessive = Mid(strName1, 1, Len(strName1) – 2) + «ого»

Case Else

dhPossessive = strName1 + «а»

End Select

Else

‘ Склонение женской фамилии

Select Case Right(strName1, 1)

Case «о», «и», «б», «в», «г», «д», «ж», «з», «к», «л», _

«м», «н», «п», «р», «с», «т», «ф», «х», «ц», «ч», _

«ш», «щ», «ь»

dhPossessive = strName1

Case «я»

dhPossessive = Mid(strName1, 1, Len(strName1) – 2) & «ой»

Case Else

dhPossessive = Mid(strName1, 1, Len(strName1) – 1) & «ой»

End Select

End If

dhPossessive = dhPossessive & » «

End If

‘ Склонение имени в родительный падеж

If Len(strName2) > 0 Then

If fMan Then

‘ Склонение мужского имени

Select Case Right(strName2, 1)

Case «й», «ь»

dhPossessive = dhPossessive & Mid(strName2, _

1, Len(strName2) – 1) & «я»

Case Else

dhPossessive = dhPossessive & strName2 & «а»

End Select

Else

‘ Склонение женского имени

Select Case Right(strName2, 1)

Case «а»

Select Case Mid(strName2, Len(strName2) – 1, 1)

Case «и», «г»

dhPossessive = dhPossessive & Mid( _

strName2, 1, Len(strName2) – 1) & «и»

Case Else

dhPossessive = dhPossessive & Mid(strName2, _

1, Len(strName2) – 1) & «ы»

End Select

Case «я»

If Mid(strName2, Len(strName2) – 1, 1) = «и» Then

dhPossessive = dhPossessive & Mid(strName2, _

1, Len(strName2) – 1) & «и»

Else

dhPossessive = dhPossessive & Mid(strName2, _

1, Len(strName2) – 1) & «и»

End If

Case «ь»

dhPossessive = dhPossessive & Mid(strName2, _

1, Len(strName2) – 1) & «и»

Case Else

dhPossessive = dhPossessive & strName2

End Select

End If

dhPossessive = dhPossessive & » «

End If

‘ Склонение отчества в родительный падеж

If Len(strName3) > 0 Then

If fMan Then

dhPossessive = dhPossessive & strName3 & «а»

Else

dhPossessive = dhPossessive & Mid(strName3, 1, _

Len(strName3) – 1) & «ы»

End If

End If

End Function

Function dhDative(strName1 As String, strName2 As String, _

strName3 As String) As String

Dim fMan As Boolean

‘ Определяем, мужские ФИО или женские

fMan = (Right(strName3, 1) = «ч»)

‘ Склонение фамилии в дательный падеж

If Len(strName1) > 0 Then

If fMan Then

‘ Склонение мужской фамилии

Select Case Right(strName1, 1)

Case «о», «и», «я», «а»

dhDative = strName1

Case «й»

dhDative = Mid(strName1, 1, Len(strName1) – 2) + «ому»

Case Else

dhDative = strName1 + «у»

End Select

Else

‘ Склонение женской фамилии

Select Case Right(strName1, 1)

Case «о», «и», «б», «в», «г», «д», «ж», «з», «к»,

«л», _ «м», «н», «п», «р», «с», «т», «ф», «х», «ц», «ч», «ш», _

«щ», «ь»

dhDative = strName1

Case «я»

dhDative = Mid(strName1, 1, Len(strName1) – 2)

& «ой»

Case Else

dhDative = Mid(strName1, 1, Len(strName1) – 1)

& «ой»

End Select

End If

dhDative = dhDative & » «

End If

‘ Склонение имени в дательный падеж

If Len(strName2) > 0 Then

If fMan Then

‘Склонение мужского имени

Select Case Right(strName2, 1)

Case «й», «ь»

dhDative = dhDative & Mid(strName2, 1, _

Len(strName2) – 1) & «ю»

Case Else

dhDative = dhDative & strName2 & «у»

End Select

Else

‘ Склонение женского имени

Select Case Right(strName2, 1)

Case «а», «я»

If Mid(strName2, Len(strName2) – 1, 1) = «и» Then

dhDative = dhDative & Mid(strName2, 1, _

Len(strName2) – 1) & «и»

Else

dhDative = dhDative & Mid(strName2, 1, _

Len(strName2) – 1) & «е»

End If

Case «ь»

dhDative = dhDative & Mid(strName2, 1, _

Len(strName2) – 1) & «и»

Case Else

dhDative = dhDative & strName2

End Select

End If

dhDative = dhDative & » «

End If

‘ Склонение отчества в дательный падеж

If Len(strName3) > 0 Then

If fMan The

dhDative = dhDative & strName3 & «у»

Else

dhDative = dhDative & Mid(strName3, 1, Len(strName3)

– 1) & «е»

End If

End If

End Function

Function dhGetName(strString As String, intNum As Integer)

‘ Функция возвращает слово с номером intNum во входной строке _

strString

Dim strTemp As String

Dim intWord As Integer

Dim intSpace As Integer

‘ Удаление пробелов по краям строки

strTemp = Trim(strString)

‘ Просмотр строки (до слова с нужным номером)

For intWord = 1 To intNum – 1

‘ Поиск следующего пробела

intSpace = InStr(strTemp, » «)

If intSpace = 0 Then

‘ Строка закончилась

intSpace = Len(strTemp)

End If

‘ Строка strTemp теперь начинается со слова с номером

intWord

strTemp = Trim(Right(strTemp, Len(strTemp) – intSpace))

Next intWord

‘ Выделение нужного слова (по пробелу после него)

intSpace = InStr(strTemp, » «)

If intSpace = 0 Then

intSpace = Len(strTemp)

End If

dhGetName = Trim(Left(strTemp, intSpace))

End Function

Чтобы ФИО отобразились в родительном падеже, следует установить курсор в ячейку с этими ФИО и запустить макрос PossessiveCase; в дательном падеже – макрос DativeCase (после написания кода эти макросы будут доступны в окне выбора макросов).

Внимание!

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

Следует учитывать, что в ячейке сначала должна следовать фамилия, за ней – имя, и затем – отчество.

Данный макрос не всегда способен корректно обрабатывать сложные имена и фамилии.

MiloNNe

Рундук

@MiloNNe

Жаль не взял собой рундук. Сундук для рун — РУНДУК

Мне надо просклонять словосочетания по падежам.

Возможно ли как-то автоматически это сделать?


  • Вопрос задан

    более года назад

  • 390 просмотров

Пригласить эксперта

Для этого потребовалось бы встроить в Excel огромный словарь. И запилить функции для работы со словарём из формул иили макросов. А microsoft уже давно выпилил даже из Word’а нормальный модуль проверки орфографии, не нужно им это: https://www.cnews.ru/news/top/rossijskaya_versiya_…

1000 лет назад делал что-то подобное на VBA. Число-в-текст, склонения/спряжения и т.п. Поищите, есть расширения для Excel которые подобным занимаются.
Другой вариант — использовать готовое: слать запрос с какому-нибудь серверу и получать в ответ то что нужно, наверняка уже есть такие сервисы, возможно даже открытые.


  • Показать ещё
    Загружается…

16 апр. 2023, в 09:40

10000 руб./за проект

16 апр. 2023, в 08:25

20000 руб./за проект

16 апр. 2023, в 06:36

1000 руб./за проект

Минуточку внимания

Понравилась статья? Поделить с друзьями:
  • Макросы самоучитель с примерами нуля в excel
  • Максимальная сумма к выдаче формула в excel
  • Макросы с условиями в excel примеры
  • Максимальная последовательность в excel
  • Макросы расчеты в excel