VBA скрипт для преобразования ФИО в родительный падеж

Скрипт VBA, добавляющий Формулу преображающую Фамилию Имя Отчество в ячейке A1 в родительный падеж
Для преобразования Фамилии Имени Отчества в родительный падеж в VBA, можно воспользоваться функцией. В русском языке родительный падеж Фамилии Имени Отчества образуется путем добавления окончания к каждому слову. Например, для Фамилии "Иванов", Имени "Иван" и Отчества "Иванович", родительный падеж будет "Иванова Ивана Ивановича".

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

Код:
Function РодительныйПадеж(ФИО As String) As String
    Dim Фамилия As String
    Dim Имя As String
    Dim Отчество As String
    Dim РодительныйФамилия As String
    Dim РодительныйИмя As String
    Dim РодительныйОтчество As String

    ' Разделение ФИО на Фамилию, Имя и Отчество
    Dim Индекс1 As Integer
    Dim Индекс2 As Integer

    Индекс1 = InStr(ФИО, " ")
    Индекс2 = InStr(Индекс1 + 1, ФИО, " ")

    Фамилия = Left(ФИО, Индекс1 - 1)
    Имя = Mid(ФИО, Индекс1 + 1, Индекс2 - Индекс1 - 1)
    Отчество = Right(ФИО, Len(ФИО) - Индекс2)

    ' Преобразование Фамилии
    If Right(Фамилия, 2) = "ов" Or Right(Фамилия, 2) = "ин" Then
        РодительныйФамилия = Фамилия & "а"
    Else
        РодительныйФамилия = Фамилия & "а"
    End If

    ' Преобразование Имени
    РодительныйИмя = Имя & "а"

    ' Преобразование Отчества
    If Right(Отчество, 4) = "вичь" Then
        РодительныйОтчество = Left(Отчество, Len(Отчество) - 2) & "а"
    Else
        РодительныйОтчество = Отчество & "а"
    End If

    ' Сборка ФИО в родительном падеже
    РодительныйПадеж = РодительныйФамилия & " " & РодительныйИмя & " " & РодительныйОтчество
End Function

Sub ПреобразоватьВРодительныйПадеж()
    Dim ФИО As String
    Dim РодительныйФИО As String

    ФИО = Range("A1").Value
    РодительныйФИО = РодительныйПадеж(ФИО)

    Range("A1").Value = РодительныйФИО
End Sub

Вы можете запустить процедуру ПреобразоватьВРодительныйПадеж для преобразования Фамилии Имени Отчества в родительный падеж в ячейке A1. Не забудьте вставить Фамилию Имя Отчество в ячейку A1 перед запуском скрипта.
 
не работает для женского рода
Для преобразования Фамилии, Имени и Отчества в родительный падеж для женского рода в VBA, необходимо учесть особенности образования родительного падежа для женского пола. Например, для Фамилии "Иванова", Имени "Ирина" и Отчества "Ивановна", родительный падеж будет "Ивановой Ирины Ивановны".

Ниже приведен исправленный скрипт VBA, который учитывает женский род:

Код:
Function РодительныйПадеж(ФИО As String) As String
    Dim Фамилия As String
    Dim Имя As String
    Dim Отчество As String
    Dim РодительныйФамилия As String
    Dim РодительныйИмя As String
    Dim РодительныйОтчество As String

    ' Разделение ФИО на Фамилию, Имя и Отчество
    Dim Индекс1 As Integer
    Dim Индекс2 As Integer

    Индекс1 = InStr(ФИО, " ")
    Индекс2 = InStr(Индекс1 + 1, ФИО, " ")

    Фамилия = Left(ФИО, Индекс1 - 1)
    Имя = Mid(ФИО, Индекс1 + 1, Индекс2 - Индекс1 - 1)
    Отчество = Right(ФИО, Len(ФИО) - Индекс2)

    ' Преобразование Фамилии
    If Right(Фамилия, 2) = "ва" Or Right(Фамилия, 2) = "на" Then
        РодительныйФамилия = Фамилия & "ой"
    Else
        РодительныйФамилия = Фамилия & "ой"
    End If

    ' Преобразование Имени
    РодительныйИмя = Имя & "ы"

    ' Преобразование Отчества
    If Right(Отчество, 4) = "вна" Then
        РодительныйОтчество = Left(Отчество, Len(Отчество) - 1) & "ы"
    Else
        РодительныйОтчество = Отчество & "ы"
    End If

    ' Сборка ФИО в родительном падеже
    РодительныйПадеж = РодительныйФамилия & " " & РодительныйИмя & " " & РодительныйОтчество
End Function

Sub ПреобразоватьВРодительныйПадеж()
    Dim ФИО As String
    Dim РодительныйФИО As String

    ФИО = Range("A1").Value
    РодительныйФИО = РодительныйПадеж(ФИО)

    Range("A1").Value = РодительныйФИО
End Sub

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