Как использовать макросы для копирования выбранных данных с одного рабочего листа на другой в Excel?

Мне нужно создать макрос в Excel, чтобы отслеживать изменение контрактов. Уже существует макрос, который обновляет данные контракта, поэтому мне нужно создать еще один макрос...

Есть два рабочих листа. На первом листе находится набор данных, каждая строка которого представляет один контракт. Есть несколько категорий (Контракт №, Дата, Цена и т.д.).

Мне нужно написать макрос, который находит только определенные контракты, соответствующие определенным критериям (например, контакты на определенную дату или определенную цену), копирует и вставляет их на второй рабочий лист.

Что я сделал до сих пор: я придумал немного запутанный способ сделать это, используя функции ЕСЛИ и ИЛИ. Поэтому, используя ИЛИ, я указываю критерии и ЕСЛИ, чтобы в основном найти соответствующие данные, если что-то ИСТИННО.

Когда что-то ложно, вводится 0. Проблема в том, что у меня есть тонны строк с нулями --- строки/контракты, которые не соответствуют критериям. Когда я пытаюсь использовать команду поиска (CTRL + F), чтобы найти, выделить и правильно удалить (со смещением строк вверх) все нули, макрос не записывает это, и я не уверен, как записать это в коде .

Любое понимание поможет!


person YFan    schedule 28.07.2011    source источник
comment
Эти функции ЕСЛИ и ИЛИ, которые вы используете... находятся в VBA или непосредственно в Excel? Если они на VBA, не могли бы вы поделиться кодом, который у вас есть сейчас?   -  person Tiago Cardoso    schedule 28.07.2011
comment
Они прямо в Excel. Это обычный оператор ЕСЛИ и ИЛИ... =ЕСЛИ(ИЛИ(TermSheet!$E40=41220,TermSheet!$M40=bpxx),TermSheet!E40,0)   -  person YFan    schedule 28.07.2011
comment
Есть ли причина не применять фильтр, чтобы выбрать обнуленные строки и избавиться от них всех? Я считаю, что это может работать даже с использованием функции записи макросов...   -  person Tiago Cardoso    schedule 28.07.2011


Ответы (1)


Просто измените формулу на:

=IF(OR(TermSheet!$E40=41220,TermSheet!$M40="bpxx"),TermSheet!E40,"")
person Lance Roberts    schedule 28.07.2011