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: как подсчитать ячейки с определенным текстом

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *