Я надеюсь, что кто-то может помочь. У меня есть панель инструментов, созданная кем-то другим, где есть множество таблиц на листах, все из которых работают с выпадающими датами (от - до) на листе 1. Меня попросили добавить к этому, и я создал сводные таблицы, которые наиболее подходят для работа. У меня проблема в том, что мне нужно, чтобы они фильтровались на основе выпадающих дат на листе 1.
Я надеюсь, что это возможно через VBA.
Мне удалось настроить фильтрацию сводных отчетов на основе другого раскрывающегося списка, основанного на тексте. Но не могу получить тот же код (при настройке, чтобы сосредоточиться на параметре «месяц» и связанной с ним раскрывающейся ячейке), чтобы он работал для выбора даты, и я также не могу понять, как разрешить множественный выбор, чтобы я мог выбрать диапазон дат.
Код, который я использовал, выглядит следующим образом:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim ws As Worksheet
Dim pt As PivotTable
Dim pi As PivotItem
Dim strField As String
strField = "Region"
On Error Resume Next
Application.EnableEvents = False
Application.ScreenUpdating = False
If Target.Address = Range("D2").Address Then
For Each ws In ThisWorkbook.Worksheets
For Each pt In ws.PivotTables
With pt.PageFields(strField)
For Each pi In .PivotItems
If pi.Value = Target.Value Then
.CurrentPage = Target.Value
Exit For
Else
.CurrentPage = "(All)"
End If
Next pi
End With
Next pt
Next ws
End If
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
Любая помощь, которую кто-либо может оказать, будет высоко оценена. Я довольно новичок в VBA и изо всех сил стараюсь настроить код, который я нахожу в Интернете, но борюсь.
Спасибо
Пересмотрено: я также попробовал приведенный ниже код, который я нашел в другом месте, который использовался для выбора диапазонов дат.
Sub FilterPivotDates()
'
Dim dStart As Date
Dim dEnd As Date
Dim pt As PivotTable
Dim pf As PivotField
Dim pi As PivotItem
Application.ScreenUpdating = False
On Error Resume Next
dStart = Sheets("Pivots").Range("F2").Value
dEnd = Sheets("Pivots").Range("f3").Value
Set pt = ActiveSheet.PivotTable1
Set pf = pt.PivotFields("Month")
pt.ManualUpdate = True
pf.EnableMultiplePageItems = True
For Each pi In pf.PivotItems
pi.Visible = True
Next pi
For Each pi In pf.PivotItems
If pi.Value < dStart Or pi.Value > dEnd Then
pi.Visible = False
End If
Next pi
Application.ScreenUpdating = False
pt.ManualUpdate = False
Set pf = Nothing
Set pt = Nothing
End Sub
В примере я обнаружил, что это управляется кнопкой, но я просто попробовал это на листе. Но это тоже не работает для меня.
dd/mm/yyyy
или что-то подобное? - person Shai Rado   schedule 23.08.2016