Функция VBA для разделения текстовой строки по языкам

Результат разбиения текстовой строки на русскую и английскую часть при помощи формулы UDF

Функция SplitLanguages предназначена для отделения русских слов от английских

(для разбиения заданной текстовой строки на две, в одной из которых будут только русские слова, а в другой - только английские)

Знаки препинания, пробелы, и прочие символы, не относящиеся к конкретному языку, попадают в обе строки.

Например, дана исходная строка "Разработка VBA макросов для программы Microsoft Excel"

Функция возвратит 2 строки: русскую "Разработка макросов для программы", и английскую "VBA Microsoft Excel"

Sub ПримерИспользования()
    txt = "Разработка VBA макросов для программы Microsoft Excel"
    РусскаяЧасть = SplitLanguages(txt)(0)
    АнглийскаяЧасть = SplitLanguages(txt)(1)
 
    Debug.Print РусскаяЧасть    ' результат: "Разработка макросов для программы"
    Debug.Print АнглийскаяЧасть ' результат: "VBA Microsoft Excel"
End Sub

Код функции SplitLanguages:

Function SplitLanguages(ByVal txt As String)
    ' функция принимает в качестве параметра текстовую строку,
    ' содержащую слова на разных языках
    ' возвращает массив из 2 значений: русские слова (0), английские слова (1)
    Dim arr(0 To 1)
    For i = 1 To Len(txt)
        letter = Mid$(txt, i, 1)
        If letter Like "[!A-z]" Then arr(0) = arr(0) & letter
        If letter Like "[!А-я]" Then arr(1) = arr(1) & letter
    Next i
    arr(0) = Application.Trim(arr(0)): arr(1) = Application.Trim(arr(1))
    SplitLanguages = arr
End Function

Внимание: для использования кода не в Excel (в VB, или других приложениях Office)
замените строку

arr(0) = Application.Trim(arr(0)): arr(1) = Application.Trim(arr(1))

на
arr(0) = Trim(arr(0)): arr(1) = Trim(arr(1))

(поскольку Application.Trim - это встроенная функция Excel)

Функцию SplitLanguages можно использовать и в качестве формулы на листе Excel
(см. пример в прикреплённом файле)

ВложениеРазмерЗагрузкиПоследняя загрузка
SplitLanguages.xls22 КБ1886 дней 2 часа назад

Комментарии

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
CAPTCHA
Подтвердите, пожалуйста, что вы - человек:
  _____                 _      _      __   __
| ___| ___ ___ | | __ | |__ \ \ / /
| |_ / __| / _ \ | |/ / | '_ \ \ V /
| _| | (__ | __/ | < | | | | | |
|_| \___| \___| |_|\_\ |_| |_| |_|
Введите код, изображенный в стиле ASCII-арт.

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

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