Vba: как заменить символы в строке
Вы можете использовать метод replace() в VBA для замены символов в строке.
Этот метод использует следующий базовый синтаксис:
Заменить(выражение, найти, заменить, начать, подсчитать)
Золото:
- выражение : строка, в которой вы хотите заменить символы.
- find : строка, которую нужно найти.
- replace : строка, которая будет использоваться в качестве замены.
- start ( необязательно ) : начальная позиция в строке для поиска.
- count ( необязательно ) : количество замен, которые необходимо выполнить.
В следующих примерах показано, как использовать этот метод на практике со следующим списком строк в Excel:
Пример 1. Используйте VBA для замены всех вхождений символов в строке (с учетом регистра).
Допустим, мы хотим заменить «это» на «ТО» в каждой строке.
Для этого мы можем создать следующий макрос:
Sub ReplaceChar() Dim i As Integer For i = 2 To 8 Range(" B " & i) = Replace(Range(" A " & i), " this ", " THAT ") Next i End Sub
Когда мы запускаем этот макрос, мы получаем следующий вывод:
В столбце B отображаются все строки столбца A, при этом каждое вхождение «this» заменяется на «THAT».
Обратите внимание, что эта замена чувствительна к регистру .
То есть каждое появление слова «это» заменяется, но каждое появление слова «это» остается в покое.
Пример 2. Используйте VBA для замены всех вхождений символов в строке (без учета регистра).
Допустим, мы хотим заменить «это» (независимо от регистра) на «ТО» в каждой строке.
Для этого мы можем создать следующий макрос:
Sub ReplaceChar() Dim i As Integer For i = 2 To 8 Range(" B " & i) = Replace(LCase(Range(" A " & i)), " this ", " THAT ") Next i End Sub
Когда мы запускаем этот макрос, мы получаем следующий вывод:
В столбце B отображаются все строки столбца A, при этом каждое вхождение «this» заменяется на «THAT».
Обратите внимание, что эта замена не чувствительна к регистру .
То есть каждое появление слова «this» (с заглавной буквы или нет) заменяется.
Мы смогли выполнить эту замену без учета регистра, используя метод LCase , чтобы сначала преобразовать каждую строку в столбце A в нижний регистр, прежде чем искать «это» в каждой строке.
Пример 3. Использование VBA для замены первых N вхождений символа в строку
Предположим, мы хотим заменить только первое вхождение «this» (независимо от регистра) на «THAT» в каждой строке.
Для этого мы можем создать следующий макрос:
Sub ReplaceChar() Dim i As Integer For i = 2 To 8 Range(" B " & i) = Replace(LCase(Range(" A " & i)), " this ", " THAT ", Count:=1) Next i End Sub
Когда мы запускаем этот макрос, мы получаем следующий вывод:
Столбец B отображает каждую строку в столбце A, заменяя только первое вхождение «this» на «THAT».
Обратите внимание, что мы использовали Count:=1 для замены только первого вхождения определенной строки, но вы можете заменить 1 любым значением, которым хотите заменить первые n вхождений определенной строки.
Примечание . Полную документацию по методу замены VBA можно найти здесь .
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные задачи с помощью VBA:
VBA: как подсчитать вхождение символов в строку
VBA: как проверить, содержит ли строка другую строку
VBA: как подсчитать ячейки с определенным текстом