Страницы: 1
RSS
Точный поиск слов в тексте при помощи VBA
 
Здравствуйте!

Есть пользовательская функция, при помощи которой происходит замена значений в ячейке.
Как сделать так, чтобы замена значений происходила с учетом следующего правила:
"Если пробелов по краям слова нет, значит это не слово, а часть слова, и замена не осуществляется."?

Недостаток этого подхода в том, что при замене придется отделять пробелами различные знаки в начале и в конце слов.
Для этого подготовил набор знаков, которые, возможно, придется отделять (файл примера, вкладка "signs").

Еще один вопрос: Где удобнее и эффективнее разместить набор знаков? В отдельной вкладке или в самом макросе?
Есть ли возможность использовать в пользовательских параметрах функции ключевое слово для определения того, что следующий за ним диапазон указывает на расположение набора знаков?

Пример:
Код
=NSub(A8;$D$8:$E$10;1;2;signs:signs!A1:A21)

В данном примере ключевое слово "signs:".

Если есть более простой способ для решения этой задачи, то было бы интересно узнать о нем.

Заранее благодарю за любую помощь!

Изменено: AB1 - 04.05.2017 11:29:02
 
смотрите в сторону RegExp -  простое решение там
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
почему бы не сделать что-то вроде:
Код
Function nn(Txt As String, rdic As Range)
    Set dic_mass = CreateObject("Scripting.Dictionary")
    mass = rdic
    For i = 1 To UBound(mass)
        dic_mass.Item(mass(i, 1)) = mass(i, 2)
    Next
    Set objRegExp = CreateObject("VBScript.RegExp")
    For Each kKey In dic_mass.Keys
        objRegExp.Pattern = "(^|[^A-Za-zА-Яа-я0-9])(" & kKey & ")([^A-Za-zА-Яа-я0-9]|$)"
        repl = "$1" & dic_mass.Item(kKey) & "$3"
        Txt = objRegExp.Replace(Txt, repl)
    Next
    nn = Txt
End Function
 
Цитата
Ігор Гончаренко написал:
смотрите в сторону RegExp -  простое решение там
Спасибо!
 
heso, ваш вариант отлично работает, большое спасибо!
Страницы: 1
Читают тему
Наверх