Профессиональные приемы работы в Microsoft Excel

Обмен опытом => Microsoft Excel => Тема начата: kaffs от 08.07.2011, 16:16

Название: Массовое "найти и заменить"
Отправлено: kaffs от 08.07.2011, 16:16
Всем привет.

Ситуация такая: работаю с прайс-листами excel, где приходится каждый день переводить с украинского на русский наименования товаров, а так же заменять буквенный артикул на цифровой (букву заменять соответствующе-присвоенным числом).

Приходится каждый раз через поиск-замену по одной менять данные в 5-ти тысячах строк.

На одном из форумов спросил про возможность ускорить этот процесс. Т.е. один раз составить таблицу данных, в первом столбце которой будут данные, которые нужно найти, а во втором столбце данные, на которые нужно заменить найденное, и запустить скрипт или функцию, чтоб эксель отрабатывал замену отталкиваясь от этой таблички.

Мне подкинули файл, который я прикрепляю к этому посту. Все работает, но там одно маленькое "но" - в табличке замены данных начиная со второй строки заменяются на данные, которые находятся на напротив, а двумя строчками ниже.
Для примера - нужно все цифры заменить соответствующими словами. "1, 2, 3, 4, 5" заменяются на "один, три, пять, семь", вместо один, два, три, четыре, пять.

Подскажите, кто знает, как поправить эту ошибку?

Вот код макроса:

Sub ups()
For Each cell In Sheets("Лист1").Range("a1:a9")
a = cell.Row
b = cell.Count + 1
    Selection.Replace What:=cell.Value, Replacement:=cell(cell.Row, cell.Count + 1).Value, LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
Next
End Sub


Из "cell.Count + 1" пробовал убрать "+ 1" - ничего не вышло.
Название: Re: Массовое "найти и заменить"
Отправлено: nilem от 08.07.2011, 17:33
Если ничего принципиально не менять, то вот так попробуйте:
Sub ups()
Dim cll As Range
For Each cll In Sheets("Лист1").Range("a1:a6")
    Selection.Replace What:=cll.Value, Replacement:=cll.Next.Value, LookAt:=xlPart
Next
End Sub
Название: Re: Массовое "найти и заменить"
Отправлено: kaffs от 08.07.2011, 19:05
Большущее спасибо! работает как надо теперь!!! )))
Название: Re: Массовое "найти и заменить"
Отправлено: alone7 от 16.04.2015, 12:35
добрый день! А возможно подправить этот скрипт для автозамены следующим образом:
поиск нескольких ячеек, содержащих текст "ааааа", "бббб" и т.д.;
замена на ячейки с таким же текстом, но с фоновой заливкой каждого текста своим цветом , т.к. каждому тексту - отдельный цвет ячейки.

Название: Re: Массовое "найти и заменить"
Отправлено: vikttur от 16.04.2015, 23:11
alone7, вопрос не по теме. Создайте свою.
Название: Re: Массовое "найти и заменить"
Отправлено: Димычч от 17.04.2015, 05:14
Предлагаю добавить универсальности этой полезной функции: сделать возможным выполнить поиск/замену
1. на всём текущем листе (без предварительного выделения диапазона).
2. во всей книге.
Подскажите, как будет выглядеть этот макрос для первой и второй задачи? Сначала была мысль выводить окошко с выбором диапазона поиска, но в этом тоже есть свои минусы. Иногда удобнее использовать отдельные макросы. 
Название: Re: Массовое "найти и заменить"
Отправлено: alone7 от 17.04.2015, 12:00
вам, конечно, виднее, насколько вопрос не по теме, но почему-то создавая новую тему я скопирую почти всё, что написано в этой теме)
Название: Re: Массовое "найти и заменить"
Отправлено: vikttur от 17.04.2015, 12:07
Вы хотите заливать цветом. о чем в заглавной теме - ни слова.
Вы хотите ИЗМЕНИТЬ показанный код под свои нужды.
Не нужно копировать все. В сообщении указать проблему и прикрепить файл-пример.
Название: Re: Массовое "найти и заменить"
Отправлено: vkontakte от 08.02.2018, 10:08
Цитата: nilem от 08.07.2011, 17:33
Если ничего принципиально не менять, то вот так попробуйте:
Sub ups()
Dim cll As Range
For Each cll In Sheets("Лист1").Range("a1:a6")
    Selection.Replace What:=cll.Value, Replacement:=cll.Next.Value, LookAt:=xlPart
Next
End Sub

У меня задача следующая: нужно заменить ID категорий на Название категорий,
соответственно на Лист 1 в столбец А я загружаю список ID, в столбец B - Названия категорий
перехожу на Лист 2, в столбец А вставляю ID категорий, выделяю диапазон, нажимаю на кнопку, заменяет,
но во многих категориях добавляет цифры к Названию категории. Как исправить?
Название: Re: Массовое "найти и заменить"
Отправлено: boa от 08.02.2018, 11:26
В вашем случае измените параметр

LookAt:=xlWhole
Название: Re: Массовое "найти и заменить"
Отправлено: vkontakte от 08.02.2018, 14:32
Огонь, всё работает! Благодарю!