Excel VBA найти и заменить из таблицы на листе разницы - PullRequest
0 голосов
/ 23 октября 2019

Я работаю над проектом, который будет фильтровать наши налоги с продаж SC по налоговым кодам. Чтобы сделать это, я должен написать несколько кодов, чтобы исправить вещи, например, названия городов. Видя, что иногда эта информация вводится в нашу систему вручную, написание может меняться, что приводит к неправильной работе моих кодов. Итак, я создал новую рабочую таблицу "CITY FIND REPLACE", где есть столбец "find" (A) с неправильным написанием и столбец "replace" (B) с тем, каким он должен быть, чтобы мои коды работали правильно. Мне нужно это в таблице, так что каждый месяц я делаю это и нахожу больше / разных вариантов написания городов, я могу добавить их в список поиска, чтобы он мог их поймать и изменить.

У меня естьТрудно получить код, который я нашел, чтобы извлечь из другого листа, и я не уверен, что я делаю неправильно. Я хочу, чтобы он просматривал столбец H на Листе 1 (RAW DATA) (число строк может меняться также каждый месяц, поэтому мне просто нужно, чтобы оно просматривало нижнюю часть данных, но это не может быть набор #), а затемсравните каждую ячейку с Sheet12 (CITY FIND REPLACE) ТАБЛИЦА 1, столбец A. Если они совпадают, замените ее на Sheet12 (CITY FIND REPLACE) столбец B.

Примечание. Кодирование VBA - это не мое. Я нащупал и использовал stackoverflow, чтобы помочь мне в другом проекте, и теперь моя работа думает, что я хорош в этом ... а я нет. Я не понимаю этоЛюбая помощь на простом английском языке была бы удивительной.

Sub FindReplace()

    For i = 2 To 40
        Worksheets("RAW DATA").Range("H:H").Select
        Selection.Replace what:=Worksheets("CITY FIND REPLACE").Cells(i, 1).Value,
        replacement:=Worksheets("CITY FIND REPLACE").Cells(i, 2).Value, lookat:=xlPart,
        searchorder:=xlByRows, MatchCase:=False

    Next

    Worksheets("RAW DATA").Cells(1, 1).Select

End Sub

Я сейчас получаю

RUN TIME ERROR'1004 ': ВЫБЕРИТЕ МЕТОД ДИАПАЗОНА КЛАССА СБОРА.

Когда я нажимаю кнопку отладки, она выделяет строку Worksheets("RAW DATA").Range("H:H").Select.

1 Ответ

1 голос
/ 23 октября 2019

Я не вижу причин, по которым это не сработает.

Sub FindReplace()

For i = 2 To 40
    Worksheets("RAW DATA").Range("H:H").Replace what:=Worksheets("CITY FIND REPLACE").Cells(i, 1).Value, _
                                   replacement:=Worksheets("CITY FIND REPLACE").Cells(i, 2).Value, lookat:=xlPart, _
                                    searchorder:=xlByRows, MatchCase:=False
Next i

End Sub
...