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


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

У наведених нижче прикладах показано, як використовувати цей метод на практиці з таким списком рядків у Excel:

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

Скажімо, ми хочемо видалити “це” з кожного рядка.

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

 Sub RemoveChar()
Dim i As Integer

For i = 2 To 8
    Range(" B " & i) = Replace(Range(" A " & i), " this ", "")
Next i
End Sub

Коли ми запускаємо цей макрос, ми отримуємо такий результат:

У стовпці B відображається кожен із рядків у стовпці A з видаленням кожного входження “this”.

Зауважте, що цей макрос чутливий до регістру .

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

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

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

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

 SubRemoveChar ()
Dim i As Integer

For i = 2 To 8
    Range(" B " & i) = Replace(LCase(Range(" A " & i)), " this ", "")
Next i
End Sub

Коли ми запускаємо цей макрос, ми отримуємо такий результат:

У стовпці B відображається кожен із рядків у стовпці A з видаленням кожного входження “this”.

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

Тобто, кожне повторення слова “this” (з великої літери чи ні) видаляється.

Ми змогли досягти цього, використовуючи метод LCase , щоб спочатку перетворити кожен рядок у стовпці A на нижній регістр перед пошуком “це” в кожному рядку.

Приклад 3: Використовуйте VBA для видалення перших N входжень символу в рядку

Скажімо, ми хочемо видалити лише перше входження “this” (незалежно від регістру) з кожного рядка.

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

 SubRemoveChar ()
Dim i As Integer

For i = 2 To 8
    Range(" B " & i) = Replace(LCase(Range(" A " & i)), " this ", "", Count:=1)
Next i
End Sub

Коли ми запускаємо цей макрос, ми отримуємо такий результат:

У стовпці B відображається кожен із рядків у стовпці A, причому видалено лише перше входження “this”.

Зауважте, що ми використовували Count:=1, щоб видалити лише перше входження певного рядка, але ви можете замінити 1 будь-яким значенням, яке хочете видалити, замість перших n входжень певного рядка.

Примітка . Повну документацію щодо методу заміни VBA можна знайти тут .

Додаткові ресурси

У наступних посібниках пояснюється, як виконувати інші типові завдання за допомогою VBA:

VBA: як підрахувати випадки появи символів у рядку
VBA: як перевірити, чи містить рядок інший рядок
VBA: як підрахувати клітинки з певним текстом

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

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