Меняем в Excel английские буквы на русские.Замена символов в VBA.
Замена английских символов в тексте на русский шрифт. Ставим задачу.
Давайте решим эту проблему, используя возможности VBA, или – проще – возможности макросов.
Написание основного кода.
Вначале попробуем определить, какие именно знаки латинского алфавита похожи на русский и запишем их в виде строки
Напоминаю, в первой строке все буквы латинские (английские, если вам так проще), а во второй – кириллица, то есть русские. Названия произвольны. Обратите внимание, что знаки, похожие по написанию, находятся на одинаковых местах. Логика тут следующая. Если один из знаков проверяемого текста совпадает с знаком из строки LatStr, то надо взять аналогичный знак из RusStr
Для этого назначим для проверяемой строки переменную TestString. К примеру, возьмем его из текущей ячейки
После этого начнем по очереди сравнивать каждый символ полученной строки с латиницей из LatStr.
Запускаем цикл для получения очередного знака из TestString.
Вначале объявим переменные хранения счетчиков циклов, а также очередных знаков из TestString и LatStr. Так же зададим переменную типа строка для результата обработки NewString
Теперь начнем так же в цикле сравнивать его со знаками из LatStr. Если такой знак отыщется, то меняем 7айденный символ соответствующий знак из RusStr.
Закрываем цикл сравнения и вернемся к проверке очередного знака.
В итоге, если буква была латинской, она заменится на соответствующую по написанию русскую, если нет – знак остается прежним. Добавим полученный результат к некоей строке NewString. Изначально наша переменная, как и любая другая, будет пустой, но после каждого прохождения цикла тестирования к ней будет добавляться очередной символ
Собираем код вместе.
Отступы могут быть произвольными, можно вообще обойтись без них, но так проще отследить, что же происходит на участках кода
Где же применить полученный код? Лично я вижу два варианта.
Создаем пользовательскую функцию – UDF.
Первый – обернуть строки кода в виде функции. Например, создать пустой файл Excel, открыть в нем редактор VBA, используя нажатие сочетания “Alt F11” и дать команду
Редактор автоматически создаст основу или – как принято это называть – каркас для функции, добавив строку End Function. После этого добавим полученный нами выше код перед строкой End Function. Первую строку кода пропускаем – мы задаем TestString как параметр – исходные данные – для нашей функции. Завершим все добавлением строки
Название функции естественно может быть произвольным.
Сохраним файл с функцией как надстройку Excel.
Теперь сохраним наш файл как надстройку Excel в формате Xlam. Excel сам автоматически выберет место для хранения надстройки. Если же вы хотите сохранить ее резервную копию, дайте команду «Сохранить как» ещё раз . После этого сделайте копию, к примеру, на рабочем столе
Файл → параметры → Надстройки → надстройки Excel → перейти
После этого функция станет доступной во всех файлах Excel для текущего пользователя в категории «Определенные пользователем»
Обратите внимание на формулы. Очевидно, что после применения функции LatinToRus были найдены все слова по образцам.
Используем создание процедуры.
Второй способ применения – использование созданного кода в виде процедуры, например, для ячеек выделения. Такую процедуру удобнее добавить в личную книгу макросов. Изначально доступ к ней запрещен, поэтому пойдем на хитрость. Запустим запись макроса с вкладки «Вид»
Укажем хранение макроса в личной книге, после чего сразу остановим запись
Снова запускаем редактор VBA и открываем текст модуля из личной книги.
Удаляем строки Sub Макрос1 () и End Sub а так же все что Excel добавил между ними и вставляем следующий код
Теперь достаточно выделить нужный диапазон, нажать сочетание Alt F8 и выбрать нашу процедуру.
Замена символов в VBA произойдет автоматически во всех выделенный ячейках. И наконец ,если вам надо наоборот поменять русские буквы в латинице, то просто поменяйте местами в циклах LatStr и RusStr то есть сделайте так
Подведем итоги.
Никто не мешает добавить символы, к примеру, заменить знак нуля на заглавную букву «О». то есть дальнейшее уже зависит от вашей фантазии. Как видите, замена символов в VBA при желании не такое уж сложное дело. Нужно только желание. Пробуйте, экспериментируйте. На этом все, встретимся на занятиях. Всем внимательности и упорства, а результат не заставит себя ждать.
Как заменить английские буквы на русские в Excel через VBA.
В приведенной выше формуле функция LEFT используется для извлечения первого символа из строки в ячейке. Затем он использует функцию UPPER, чтобы изменить регистр первой буквы на верхний. Затем он объединяет остальную часть строки (которая извлекается с помощью функции RIGHT).