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» удалено.
Обратите внимание, что этот макрос чувствителен к регистру .
То есть каждое появление слова «это» удаляется, но каждое появление слова «это» остается в покое.
Пример 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» удалено.
Обратите внимание, что эта замена не чувствительна к регистру .
То есть каждое появление слова «это» (с заглавной буквы или нет) удаляется.
Нам удалось добиться этого, используя метод 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: как подсчитать ячейки с определенным текстом