Надявам се някой да може да помогне. Имам табло за управление, създадено от някой друг, където има множество таблици в листове, всички работещи от падащи селекции на дати (От - До) на лист 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