Найти и заменить несколько символов в строке VBA

Вопрос: У меня есть большой объем данных, которые я хочу заменить с помощью макроса. Я использую код ниже прямо сейчас, но проблема в том, что он заменит только одно значение, которое равно D в коде ниже. Sub Replace() what = "D" replc = "" Sheets("Sheet1").Select Cells.replace What:=word, Replacement:=replc, LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=True, SearchFormat:=False, _ ReplaceFormat:=False

Вопрос:

У меня есть большой объем данных, которые я хочу заменить с помощью макроса. Я использую код ниже прямо сейчас, но проблема в том, что он заменит только одно значение, которое равно D в коде ниже.

Sub Replace() what = «D» replc = «» Sheets(«Sheet1»).Select Cells.replace What:=word, Replacement:=replc, LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=True, SearchFormat:=False, _ ReplaceFormat:=False End Sub

Мои данные приведены ниже. Поскольку вы можете видеть, что какое-то значение имеют алфавитные символы, символ или комбинацию символов в конце или как значение ячейки, которое я хочу заменить или удалить, а также некоторое значение, будут заменены другими значениями. Я создаю макрос со всеми возможностями, чтобы найти нужное значение и заменить его.

0065D 2089 2797 3270 3315 0066D 2095 2799 3300 3334 0067D 2105 2802 3582aX a 2089 – 2812 3307 3383 2095 2111 1164D 3315 3385 2105 2112 1165D 3334 3400 2110 2114 2841 3336F 3507 0771N 2121 2881 3365 3515N * 0908P * 2130 2883 3372X 3548 0913P 2131 2913 3373 3559 2111 2143 2915 3373 3574

Вы также заметили, что есть и символы нижнего регистра. Прямо сейчас я пытался использовать условие IF с помощью Find, но не смог добиться успеха. Я делаю над макросом все возможные условия, чтобы заменить и запустить его из другого макроса, который является чем-то вроде ниже algo.

IF find «D» Then Run macro «Replace» Elseif find «X» Run macro «Replace» Elseif find «F» Run macro «Replace» and so on….

но если макрос не нашел требуемого символа в листе, он переходит к следующему шагу и так далее. Я хочу, чтобы это было так плохо. Я должен выполнить эту процедуру замены несколько раз.

Поэтому любая помощь будет оценена.

благодаря

Ответ №1

Вы можете добавлять/удалять необходимые символы из массива toRemove().

Sub replaceChars() Dim toRemove() toRemove() = Array(«D», «X», «F») For Each itm In toRemove() For Each iCell In ActiveSheet.UsedRange iCell.Replace What:=itm, Replacement:=»», MatchCase:=True Next iCell Next itm End Sub

Оцените статью
Добавить комментарий