2015-05-29 5 views
0

У меня есть лист Excel с большим количеством данных в виде таблицы. Вот макрос запись для того, что хотите сделатьКак изменить фильтр, а затем скопировать все данные, указанные

ActiveSheet.Range("$A$1:$M$2735").AutoFilter Field:=1, Criteria1:= _ 
    "2015-05-28" 
    Range("A2618").Select 
    Range(Selection, Selection.End(xlToRight)).Select 
    Range(Selection, Selection.End(xlDown)).Select 
    Selection.Copy 

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

Я также хочу просто выбрать верхнюю левую ячейку после того, как данные будут отфильтрованы, этот код сделает это, назвав ее. После этого я хочу выбрать все данные в таблице и скопировать. Я знаю, что это имеет какое-то отношение к Range («A1»). CurrentRegion, но я не знаю, как это реализовать.

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

К сожалению, это 3 вопроса в должности, но помощь была бы оценена

ответ

1

VBA знает таблицы как listobjects, так что если вы хотите сослаться на таблицу в листе, который вы можете использовать: Sheets(i).ListObjects(1).Range

Чтобы выбрать вся таблица после фильтрации: Sheets(i).ListObjects(1).Range.SpecialCells(xlCellTypeVisible).Select

Установка фильтра вчера: Sheets(i).ListObjects(1).Range.AutoFilter Field:=1, Criteria:=format(date()-1,"yyyy-mm-dd")

+0

Спасибо это помогло много! У меня есть еще один вопрос: :) Как добавить дополнительные даты на фильтр, который установлен на вчера, будет ли это: критериев: = format (date() - 1, "yyyy-mm-dd") (дата () -2 "yyyy-mm-dd") и т. Д.? Что я пытаюсь спросить, как отформатировать код, чтобы я мог его фильтровать вчера, а затем вчера за 2 дня до этого, а затем на прошлой неделе. –

+0

Что значит «тогда» для вас? Покажите так, что указанные в часах значения одновременно (смотрите здесь: http://stackoverflow.com/a/18135388/4721734) или вы хотите, чтобы макрос менялся от одного к другому (в этом случае сохраняйте ваши значения в массиве как в предыдущей ссылке и пропустить их через 'for') –

Смежные вопросы