[img]file:///C:/Users/DEMINDS/Desktop/table_1.jpg[/img]Доброго дня! Есть желание автоматизировать рабочий процесс. Имею в наличии сводную таблицу следующего типа (см. загруженный файл): [img]file:///C:/Users/DEMINDS/Desktop/table_1.jpg[/img] Я написал макрос, который брал бы данные из колонок "first day" "last day" и по ним фильровал таблицу. Но к сожалению, макрос выдает ошибку
Код
Sub autofilter()
Dim StDate As Long: StDate = [H2]
Dim EndDate As Long: EndDate = [I2]
Range("B1" & Rows.Count).autofilter DATE_PROLONGATION, ">=" & [H2].Value2, xlAnd, "<=" & [I2].Value2
End Sub
При исполнении макрос выдает ошибку "Method range of object"_global failed Как можно исправить скрипт?
скрин кода чтоль отправить... можно примерно так. название сводной поменяйте на своё только
Код
Sub pivfltr()
Dim StDate As Date: StDate = [H2]
Dim EndDate As Date: EndDate = [I2]
Dim dt As Date
With ActiveSheet.PivotTables("PivotTable1").PivotFields("DATE_PROLONGATION")
For i = 1 To .PivotItems.Count
dt = Format(.PivotItems(i), "mm.dd.yyyy")
If dt < StDate Or dt > EndDate Then .PivotItems(i).Visible = False
Next
End With
End Sub
yozhik, Работает, огромное спасибо! Есть только один момент, в выпадающем списке должны быть выбраны все даты, что бы скрипт отработался корректно. Есть возможности для автоматического выделения всего диапазона?
yozhik написал: Допишите в 8 строчке после False Else .PivotItems(i).Visible=True
Попробовал, не помогает. Обновляю сводную таблицу (соответственно в date_prolongation попадают новые даты), запускаю скрипт, выдает ошибку "Run-time erro 1004 Нельзя утсновить свойство Visible класса PivotItem'/ Все еще помогате выбрать вручную все даты и запустить макрос.
UPD/ Вышел из ситуации:
Код
Sub pivottable1()
Sheets("PivotTable").PivotTables("PivotTable1").PivotCache.Refresh
Sheets("PivotTable").PivotTables("PivotTable1").PivotFields("DATE_PROLONGATION").ClearAllFilters
Dim StDate As Date: StDate = [N2]
Dim EndDate As Date: EndDate = [P2]
Dim dt As Date
With ActiveSheet.PivotTables("PivotTable1").PivotFields("DATE_PROLONGATION")
For i = 1 To .PivotItems.Count
dt = Format(.PivotItems(i), "mm.dd.yyyy")
If dt < StDate Or dt > EndDate Then .PivotItems(i).Visible = False Else .PivotItems(i).Visible = True
Next
End With
End Sub