Замена части строкового выражения в VBA Excel по указанному шаблону поиска и замены и возврат преобразованной строки с помощью функции Replace.
Определение функции Replace
Если замену подстроки необходимо осуществить в диапазоне ячеек, функцию Replace следует применить к значению каждой ячейки заданного диапазона. Проще замену в диапазоне ячеек произвести с помощью метода Range.Replace.
Синтаксис и параметры
Replace(expression, find, replace, [start], [count], [compare])
- expression – исходное строковое выражение, содержащее подстроку, которую необходимо заменить;
- find – искомая подстрока, подлежащая замене;
- replace – подстрока, заменяющая искомую подстроку;
- start – порядковый номер символа исходной строки, с которого необходимо начать поиск, часть строки до этого номера обрезается, по умолчанию равен 1 (необязательный параметр);
- count – количество замен подстроки, по умолчанию выполняется замена всех обнаруженных вхождений (необязательный параметр);
- compare – числовое значение, указывающее вид сравнения (необязательный параметр).
Сокращенный синтаксис функции Replace с необязательными параметрами по умолчанию:
Replace(expression, find, replace)
Параметр compare
Константа | Значение | Описание |
---|---|---|
vbUseCompareOption | -1 | используется параметр, заданный оператором Option Compare |
vbBinaryCompare | 0 | выполняется двоичное сравнение |
vbTextCompare | 1 | применяется текстовое сравнение |
По умолчанию используется двоичное (бинарное) сравнение. При таком сравнении буквенные символы в нижнем и верхнем регистрах различаются. Если необходимо провести замену подстроки независимо от регистра букв, используйте значение параметра compare – vbTextCompare (1).
Примеры кода VBA Excel
Пример 1
Замена единственного вхождения искомой подстроки в строковое выражение:
1 2 3 4 5 6 7 |
Sub Primer1() Dim a a = "Сливочное масло" a = Replace(a, "Сливочное", "Рыжиковое") MsgBox a 'Результат: "Рыжиковое масло" End Sub |
Пример 2
Замена нескольких вхождений искомой подстроки в строковое выражение:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
Sub Primer2() Dim a a = "Идёт медведь, идёт лиса, идёт грач" 'с параметром compare по умолчанию a = Replace(a, "идёт", "бежит") MsgBox a 'Результат: 'Идёт медведь, бежит лиса, бежит грач a = "Идёт медведь, идёт лиса, идёт грач" 'с параметром compare=1(vbTextCompare) a = Replace(a, "идёт", "бежит", , , 1) MsgBox a 'Результат: 'бежит медведь, бежит лиса, бежит грач End Sub |
Пример 3
Замена одного вхождения искомой подстроки в строковое выражение из нескольких с обрезанием исходной строки до 15 символа:
1 2 3 4 5 6 7 8 |
Sub Primer3() Dim a a = "Идёт медведь, идёт лиса, идёт грач" a = Replace(a, "идёт", "бежит", 15, 1) MsgBox a 'Результат: 'бежит лиса, идёт грач End Sub |