Как транслитерировать текст в Excel (русский текст преобразовать в английский транслит)

Очень часто требуется преобразовать русский текст (кириллицу) в английский (транслит), не перевести, а написать русские слова английскими буквами.

Такое, например, может понадобиться для импорта данных в какую-нибудь программу, базу данных, которая не поддерживает русские буквы. Задача распространенная, но стандартными средствами Excel не решается.

как преобразовать английй текст в транслит в Excel

Мы предлагаем вам два варианта решения данной задачи.

Первый способ транслитерировать русский текст

Первый способ транслита русского текста достаточно топорный – с использованием приложения Punto Switcher от Яндекс.

Скачиваем программу Punto Switcher на официальном сайте: http://punto.yandex.ru/

Punto Switcher — программа, которая автоматически переключает раскладку клавиатуры. Она знает, что «ghbdtn» — это «привет», а «пщщв ьщктштп» — это «good morning». 

Так вот, данная программа, помимо своей основной функции можете переводить текст в транслит, менять регистр выделенного текста (сделать из “иванов” в “ИВАНОВ”) и другое.

Устанавливаем программу себе на компьютер, в системном трее должен появится значок программы

punto-switcher

Если зайти в настройки (правой кнопкой мыши по значку, выбрать настройки, горячие клавиши), то можно увидеть, что по умолчанию установлено переводить текст в транслит с помощью горячих клавиш Alt+Scroll Lock

Горячие клавиши в Punto Switcher

К сожалению, в самом Excel программа транслитерировать текст не сможет, необходимо промежуточное действие. Копируем столбец с русскими буквами, открываем блокнот на компьютере (Notepad) и вставляем туда текст, далее выделяем текст в блокноте и нажимаем клавиши Alt+Scroll Lock, текст автоматически поменяется на транслит.

Далее вы просто копируете этот текст и вставляете обратно в Excel.

Это удобно если нужно например перевести в translit, например один объемный столбец данных на русском языке, но иногда преобразование текста в транслит требуется с помощью формул Excel, поэтому рассмотрим второй способ с использованием пользовательской функции Excel, написанной на VBA

Второй способ перевода русского текста в транслит в Excel с помощью пользовательской функции

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

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", "jo", "zh", "z", "i", "j", _
 "k", "l", "m", "n", "o", "p", "r", "s", "t", "u", "f", "kh", "ts", "ch", _
 "sh", "sch", "''", "y", "'", "e", "yu", "ya", "A", "B", "V", "G", "D", _
 "E", "JO", "ZH", "Z", "I", "J", "K", "L", "M", "N", "O", "P", "R", _
 "S", "T", "U", "F", "KH", "TS", "CH", "SH", "SCH", "''", "Y", "'", "E", "YU", "YA")

 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

Переключите раскладку на русский язык!! Копируем данный код, открываем среду VBA, для это нажмите правой кнопкой на активный лист и выберите пункт “Исходные данные“, либо нажмите Alt+F11 далее через меню выберите новый программный модуль (Insert – Module)

Открываем среду VBA для вставки кода

и в открывшееся окно вставляете данный код и закрываете это окно.

После этого в любом месте данного листа (а при вставке кода с помощью Insert – Module – в любом месте данной книги) вы сможете использовать пользовательскую функцию, которую можно вызвать выбрав:

Вставка – Функция (Insert – Function)

в Excel 2013 Функция – Вставить функцию

Выбираем Категория: определенные пользователем, в данном списке должна появится наша функция Translit

функция транслит

Можно просто в нужной ячейке набрать =Transit(ссылка_на_русский_текст) 

Как преобразовать тект в транслит - функция Excel

После этого протягиваем формулу и получаем нужный нам результат.

Если вы присмотритесь в полученный результат, то увидите, что данные немного отличаются, например

Ivanov Sergej Petrovich и Ivanov Sergey Petrovich

то есть буква “й” преобразовалась по-разному, если для вас это критично, то нужно будет немного поменять указанный выше код. В коде есть две таблицы – одна на русском языке, другая латиницей. Не трудно догадаться, что вам необходимо поменять нужные вам буквы. В данном случае в коде нужно найти “j” и поменять на “y”, если требуется, то по аналогии поступаем с другими буквам.

Важно!

  • Начиная с Excel 2007 не забудьте сохранить файл в формате поддержки макросов – xlsm, иначе макрос не сохранится;
  • Данный макрос необходимо вставлять в каждую отдельную книгу, в которой вы хотите, чтобы он работал;
  • Иногда требуется, чтобы была не встроенная функция, а макрос при запуске которого текст будет переводится в транслит, в этом случае нужно вставить код, указанный ниже. В итоге, для перевода текста в transit необходимо выделить нужный текст на русском языке (диапазон ячеек) и запустить макрос “Translit” и данный текст будет обработан.
  • Важно! Перед копированием данного кода, обязательно переключите раскладку клавиатуры на русский язык.
Sub Translit()
Dim Txt As Variant
Dim i As Integer
Dim J As Integer
Dim c As String
Dim flag As Integer
Dim outchr As String
Dim outstr As String

 Dim Rus As Variant
 Rus = Array("а", "б", "в", "г", "д", "е", "ё", "ж", "з", "и", "й", "к", _
 "л", "м", "н", "о", "п", "р", "с", "т", "у", "ф", "х", "ц", "ч", "ш", _
 "щ", "ъ", "ы", "ь", "э", "ю", "я", "А", "Б", "В", "Г", "Д", "Е", _
 "Ё", "Ж", "З", "И", "Й", "К", "Л", "М", "Н", "О", "П", "Р", _
 "С", "Т", "У", "Ф", "Х", "Ц", "Ч", "Ш", "Щ", "Ъ", "Ы", "Ь", "Э", "Ю", "Я")

 Dim Eng As Variant
 Eng = Array("a", "b", "v", "g", "d", "e", "jo", "zh", "z", "i", "j", _
 "k", "l", "m", "n", "o", "p", "r", "s", "t", "u", "f", "kh", "ts", "ch", _
 "sh", "sch", "''", "y", "'", "e", "yu", "ya", "A", "B", "V", "G", "D", _
 "E", "JO", "ZH", "Z", "I", "J", "K", "L", "M", "N", "O", "P", "R", _
 "S", "T", "U", "F", "KH", "TS", "CH", "SH", "SCH", "''", "Y", "'", "E", "YU", "YA")

 For Each Txt In Selection.Cells
 outstr = Empty
 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

 Txt.Value = outstr
 Next Txt
End Sub
 

Итак, надеюсь вы нашли ответ на свой вопрос о том, как проще всего транслитерировать текст в Excel (преобразовать текст на русском языке в транслит).

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

SirExcel – безграничные возможности Excel

Поделиться:
29 Комментариев
  • Настя says:

    Все работает, спасибо большое!

  • Марина says:

    Вложение  excel-error.docx

    Добрый день!
    Не появляется пользовательская функция, пишет ошибку #NAME?. Подскажите, пожалуйста, в чем ошибка?

  • Гриша says:

    Attribute VB_Name = “Module1”
    Function Translit(RusText As String) As String
    Dim RusAlphabet As Variant ‘массив из букв русского алфавита
    RusAlphabet = Array(“а”, “б”, “в”, “г”, “д”, “е”, “ё”, “ж”, “з”, “и”, “й”, “к”, “л”, “м”, “н”, “о”, “п”, “р”, “с”, “т”, “у”, “ф”, “х”, “ц”, “ч”, “ш”, “щ”, “ъ”, “ы”, “ь”, “э”, “ю”, “я”, “є”, “ї”, “А”, “Б”, “В”, “Г”, “Д”, “Е”, “Ё”, “Ж”, “З”, “И”, “Й”, “К”, “Л”, “М”, “Н”, “О”, “П”, “Р”, _
    “С”, “Т”, “У”, “Ф”, “Х”, “Ц”, “Ч”, “Ш”, “Щ”, “Ъ”, “Ы”, “Ь”, “Э”, “Ю”, “Я”, “Є”, “Ї”)

    Dim EngAlphabet As Variant ‘массив из букв английского алфавита
    EngAlphabet = Array(“a”, “b”, “v”, “g”, “d”, “e”, “e”, “zh”, “z”, “y”, “i”, “k”, “l”, “m”, “n”, “o”, “p”, “r”, “s”, “t”, “u”, “f”, “h”, “tc”, “ch”, “sh”, “shch”, “”, “y”, “”, “e”, “iu”, “ia”, “ie”, “ii”, “A”, “B”, “V”, “G”, “D”, “E”, “Yo”, “Zh”, “Z”, “I”, “Y”, “K”, “L”, “M”, “N”, “O”, “P”, “R”, _
    “S”, “T”, “U”, “F”, “H”, “Ts”, “Ch”, “Sh”, “Shch”, “”, “Y”, “”, “E”, “Yu”, “Ya”, “Ye”, “Yi”)

    Dim EngText As String, Letter As String, Flag As Boolean

    For i = 1 To Len(RusText) ‘цикл по всем символам русского текста
    Letter = Mid(RusText, i, 1)
    Flag = 0
    For j = 0 To 68 ‘цикл по всем буквам русского алфавита
    If RusAlphabet(j) = Letter Then ‘если символ из текста совпал с буквой из русского алфавита…
    Flag = 1
    EngText = EngText & EngAlphabet(j) ‘… то добавляем соответствующую букву из английского алфавита
    Exit For
    End If
    Next j
    If Flag = 0 Then EngText = EngText & Letter ‘если символа из текста в алфавите нет (например, знаки препинания и т.п.), то добавляем символ без изменения
    Next i
    Translit = EngText
    End Function

  • Аня says:

    не работает пишет #ИМЯ? – как только я не делала все равно такая ошибка

  • Jamshid says:

    ошибка #ИМЯ?

    • excel says:

      Все пункты из “Важно” выполнили?

  • Мария says:

    Вложение

    Добрый день!
    Подскажите, пожалуста, где ошибка?

    • excel says:

      Что то при копировании не так. Не та кодировка. А вы переключаете на русский язык перед копированием текста. Как написано в инструкции?

  • Гасан says:

    Вложение  01.2016-1.xls

    как изменить шрифт с кириллицы на латинский в эксель готовом тексте?

    • excel says:

      про это написано в статье

  • Семён says:

    Подскажите выскакивает ошибка http://joxi.ru/EA4bKqJhDMXEKm

    • Анатолий says:

      Расставьте строки так же, как указано в примере, а не в одну строку.
      Visual Basic ругается, когда не соблюдаются переносы строк, поскольку конец строки подразумевает конец выполнения одной отдельной операции.
      Все операции в одну строку компилятор пытается воспринять как одну операцию, что и вызывает ошибку.

  • А says:

    Добрый день.
    Спасибо за макрос.
    Вариация на тему:

    Function Translit(Txt As String) As String
    a = Array(“а”, “a”, “б”, “b”, “в”, “v”, “г”, “g”, “д”, “d”, “е”, “e”, “ё”, “jo”, “ж”, “zh”, “з”, “z”, “и”, “i”, “й”, “j”, “к”, “k”, “л”, “l”, “м”, “m”, “н”, “n”, “о”, “o”, “п”, “p”, “р”, “r”, “с”, “s”, “т”, “t”, “у”, “u”, “ф”, “f”, “х”, “h”, “ц”, “c”, “ч”, “ch”, “ш”, “sh”, “щ”, “sch”, “ъ”, “””, “ы”, “y”, “ь”, “‘”, “э”, “e”, “ю”, “yu”, “я”, “ya”, “А”, “A”, “Б”, “B”, “В”, “V”, “Г”, “G”, “Д”, “D”, “Е”, “E”, “Ё”, “JO”, “Ж”, “ZH”, “З”, “Z”, “И”, “I”, “Й”, “J”, “К”, “K”, “Л”, “L”, “М”, “M”, “Н”, “N”, “О”, “O”, “П”, “P”, “Р”, “R”, “С”, “S”, “Т”, “T”, “У”, “U”, “Ф”, “F”, “Х”, “H”, “Ц”, “C”, “Ч”, “CH”, “Ш”, “SH”, “Щ”, “SCH”, “Ъ”, “””, “Ы”, “Y”, “Ь”, “‘”, “Э”, “E”, “Ю”, “YU”, “Я”, “YA”)
    For i = 0 To 121 Step 2
    Txt = Replace(Txt, a(i), a(i + 1))
    Next i
    Translit = Txt
    End Function

  • excel says:

    У меня не ругается, если вы добавляете знак, а не меняете, то не забудьте увеличить кол-во итераций. For J = 0 To 65 поменять на For J = 0 To 66
    При этом кавычки нужно вставить именно елочки

  • Игнат says:

    Подскажите пожалуйста. Хочу транслитерировать знак ковычек ” в маленькую латинскую m. Какой знако поставить в ковычках? на ” ругается ошибкой синтаксиса

  • Анатолий says:

    Решение не элегантное, но решение !
    =Translit(ПОДСТАВИТЬ(B10;”/”;”-“))

  • Анатолий says:

    Добрый день, функция работает отлично !

    Хотелось бы чтобы ещё слэш менялся на тире попробовал дописать , “/” и , “-” не работает, что изменить подскажите пожалуйста. Заранее спасибо.

    • excel says:

      Добрый день! Попробуйте изменить
      For J = 0 To 65
      на
      For J = 0 To 66

  • Алина says:

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

    Заранее огромное спасибо.

    • excel says:

      Этого недостаточно, там нужно будет еще код дописать. Макрос ведь берет по одной букве и соответствующий ей транслит, например находит одну русскую букву “ш” и переводит ее в две буквы “sh”.
      Если просто буквы поменять местами, то буква “sh” не измениться на “ш” а поменяется на как буква “s”, поэтому нужно будет дописывать, чтобы макрос сначала проверял по две буквы и сначала менял их, а потом уже прогонял по одной букве. К сожалению в написании макроса не помогу

  • Иван says:

    После исправления (удаления ;amp) работает, но нужно добавить “:” после Else в строке 29. Кроме того, подпрограмма не правильно работает при выделении столбца. В каждой последующей строке появляется результат предыдущей строки + результат текущей строки, так как это описала Ольга (то есть A, A&B, A&B&C….)

    • excel says:

      Проверил еще раз – оказалось, что действительно не хватало одной строчки кода.
      Поправил код – должно работать.
      Спасибо, что указали на ошибку

  • Иван says:

    ошибка возникает в строке:
    If flag Then outstr = outstr & outchr Else outstr = outstr & с

  • Иван says:

    Не работает! ошибки: outchr : : Empty
    outstr :

    • Иван says:

      В каком случае использовать подпрограмму Sub Translit, а в каком случае Function Translit. Ни та ни другая не работают.При отладке выдается ошибка: Нет определения outstr и outchr

      • excel says:

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

        Sub Translit – используются, когда вам нужно выделить нужный текст, запустить макрос и преобразовать текст.

        Function Translit – будет работать как отдельная функция. Например написан текст русскими буквами, а рядом вы прописываете формул транслита и он будет отображаться английскими буквами.

    • excel says:

      Должно работать, недавно проверял.
      Обратите внимание на вот этот пункт:
      “Важно! Перед копированием данного кода, обязательно переключите раскладку клавиатуры на русский язык.”

  • Ольга says:

    Добрый день!
    Подскажите, почему, если выделить несколько ячеек и запустить макрос, значение в каждой последующей состоит из предыдущего и текущего значений? (то есть A, A&B, A&B&C….)

    • excel says:

      Добрый день! Сейчас проверил, все работает как часы. Единственное, когда копируете код макроса в VBA, перед тем как копировать код макроса, нужно обязательно переключиться на русскую клавиатура, тогда код скопируется в правильной кодировке

Добавить комментарий

Ваш e-mail не будет опубликован. Все поля обязательны для заполнения.

×
Рекомендуем посмотреть