Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Microsoft Office (Word, Excel, Outlook и т.д.) (http://forum.oszone.net/forumdisplay.php?f=115)
-   -   [решено] Транслитерация + вывод части содержимого ячейки (http://forum.oszone.net/showthread.php?t=341983)

it3 29-08-2019 08:15 2885814

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

Есть ячейка с ФИО (Задаётся вручную): Иванов Иван Иванович
Необходимо чтобы в следующей ячейке был транслитерация (Выводится автоматически): Ivanov Ivan Ivanovich
В следующей ячейке (Выводится автоматически): ivanov.ii
В следующей ячейке (Выводится автоматически): Ivan.Ivanov

В принципе с транслитерацией нет проблем. Использую такой модуль:
Код:

Function Translit(Txt As String) As String

    Dim Rus As Variant
    Rus = Array("à", "á", "â", "ã", "ä", "å", "¸", "æ", "ç", "è", "é", "ê", _
    "ë", "ì", "í", "î", "ï", "ð", "ñ", "ò", "ó", "ô", "õ", "ö", "÷", "ø", _
    "ù", "ú", "û", "ü", "ý", "þ", "ÿ", "À", "Á", "Â", "Ã", "Ä", "Å", _
    "¨", "Æ", "Ç", "È", "É", "Ê", "Ë", "Ì", "Í", "Î", "Ï", "Ð", _
    "Ñ", "Ò", "Ó", "Ô", "Õ", "Ö", "×", "Ø", "Ù", "Ú", "Û", "Ü", "Ý", "Þ", "ß")

    Dim Eng As Variant
    Eng = Array("a", "b", "v", "g", "d", "e", "e", "zh", "z", "i", "i", _
    "k", "l", "m", "n", "o", "p", "r", "s", "t", "u", "f", "kh", "ts", "ch", _
    "sh", "sh", "", "y", "", "e", "iu", "ia", "A", "B", "V", "G", "D", _
    "E", "E", "ZH", "Z", "I", "I", "K", "L", "M", "N", "O", "P", "R", _
    "S", "T", "U", "F", "KH", "TS", "CH", "SH", "SH", "", "Y", "", "E", "IU", "IA")
   
    For I = 1 To Len(Txt)
        ñ = Mid(Txt, I, 1)
   
        flag = 0
        For J = 0 To 65
            If Rus(J) = ñ Then
                outchr = Eng(J)
                flag = 1
                Exit For
            End If
        Next J
        If flag Then outstr = outstr & outchr Else outstr = outstr & ñ
    Next I
   
    Translit = outstr
   
End Function


Iska 29-08-2019 09:04 2885820

it3, а оно Вам надо — автоматически? Может быть проще — три обычных функции Рабочего листа, обычный их ввод вида =FullFIO(A2), =DotFIO(A2), =DotFullFI(A2), не? Или Вам обязательно, кровь из носу, надо автоматически?!

it3 29-08-2019 09:44 2885824

Цитата:

Цитата Iska
it3, а оно Вам надо — автоматически? Может быть проще — три обычных функции Рабочего листа, обычный их ввод вида =FullFIO(A2), =DotFIO(A2), =DotFullFI(A2), не? Или Вам обязательно, кровь из носу, надо автоматически?! »

Да, кровь из носу. :-)
Сделал следующим образом:
ivanov.ii
Код:

=ЕСЛИ(A2=0;"";СЦЕПИТЬ(СТРОЧН(СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ(B2;" ";ПОВТОР(" ";ДЛСТР(B2)));ДЛСТР(B2)*(1-1)+1;ДЛСТР(B2))));".";СТРОЧН(ЛЕВСИМВ(СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ(B2;" ";ПОВТОР(" ";ДЛСТР(B2)));ДЛСТР(B2)*(2-1)+1;ДЛСТР(B2)))));СТРОЧН(ЛЕВСИМВ(СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ(B2;" ";ПОВТОР(" ";ДЛСТР(B2)));ДЛСТР(B2)*(3-1)+1;ДЛСТР(B2)))))))
Ivan.Ivanov
Код:

=ЕСЛИ(A2=0;"";СЦЕПИТЬ(СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ(B2;" ";ПОВТОР(" ";ДЛСТР(B2)));ДЛСТР(B2)*(2-1)+1;ДЛСТР(B2)));".";СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ(B2;" ";ПОВТОР(" ";ДЛСТР(B2)));ДЛСТР(B2)*(1-1)+1;ДЛСТР(B2)))))

Iska 29-08-2019 13:54 2885870

it3, ну, и где тут Ваше «автоматически»?


Время: 23:24.

Время: 23:24.
© OSzone.net 2001-