Я начал использовать VBA в течение месяца, и мне интересно создавать сложные файлы Excel.
У меня есть лист Master_DATA, в котором все данные поступают по запросу из OneDrive. И есть несколько сводных таблиц, в которых источником является таблица «DATA» в таблице Master_DATE. Все сводки связаны с сводными диаграммами. Эти графики находятся на панели инструментов.
Мне нужен макрос, который применяет фильтр к таблице «ДАННЫЕ» в соответствии со столбцом «Дата закрытия эксп.» (Или столбец N), чтобы получить до сегодняшней даты, а затем макрос должен скопировать отфильтрованные данные в новый лист, который названный "DATA_OD". Затем я бы хотел сделать этот новый лист источником всех сводных таблиц. Таким образом, графики на приборной панели будут автоматически обновляться.
Сводные таблицы находятся на 3 разных листах.
Я попробовал вот что:
Сначала я использовал эту формулу на новом листе («DATA OD»). ) для фильтрации и копирования данных:
=FILTER(DATA;DATA[Exp. Closing Date]<TODAY())
Затем используйте макрос ниже:
Sub AdjustPivotDataRange()
Dim pt As PivotTable, pc As PivotCache
Dim dataSheet As Worksheet, ws As Worksheet
Dim startPoint As Range, dataSource As Range, newRange As String
' get worksheet with data
Set dataSheet = ThisWorkbook.Worksheets("DATA_OD")
' Dynamically Retrieve Range Address of Data
Set startPoint = dataSheet.Range("A1")
Set dataSource = dataSheet.Range(startPoint, startPoint.SpecialCells(xlLastCell))
newRange = dataSheet.Name & "!" & dataSource.Address(ReferenceStyle:=xlR1C1)
' create new PivotCache
Set pc = ActiveWorkbook.PivotCaches.Create( _
SourceType:=xlDatabase, _
SourceData:=newRange)
' loop through all tables in all sheets
For Each ws In ActiveWorkbook.Worksheets
For Each pt In ws.PivotTables
' update pivot source and refresh
pt.ChangePivotCache pc
pt.RefreshTable
Next pt
Next ws
End Sub
Мне также нужен второй макрос, чтобы все повернуть назад, но я думаю, что справлюсь сам.
Надеюсь, объяснение для вас понятно. Заранее спасибо.