Vba: як замінити символи в рядку


Ви можете використовувати метод Replace() у VBA для заміни символів у рядку.

Цей метод використовує такий базовий синтаксис:

Замінити (вираз, знайти, замінити, почати, підрахувати)

золото:

  • вираз : Рядок, у якому потрібно замінити символи
  • find : Рядок для пошуку
  • replace : Рядок для використання як заміни
  • початок ( необов’язково ) : початкова позиція в рядку для пошуку
  • 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”.

Зверніть увагу, що ця заміна чутлива до регістру .

Тобто кожне входження «this» замінюється, але кожне входження «this» залишається окремо.

Приклад 2: використання VBA для заміни всіх входжень символів у рядку (незалежно від регістру)

Скажімо, ми хочемо замінити «this» (незалежно від регістру) на «THAT» у кожному рядку.

Для цього ми можемо створити такий макрос:

 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 на нижній регістр перед тим, як шукати «this» у кожному рядку.

Приклад 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: як підрахувати клітинки з певним текстом

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *