Modifica filtri Pivot
Hai un problema con Excel? 
Modifica filtri Pivot
di Giulio (utente non iscritto) data: 23/04/2013 12:22:46
Buongiorno a tutti,
sono nuovo del forum e scrivo per trovare la soluzione ad un problema con le Pivot di Excel.
Brevemente: ho una serie di tabelle pivot identiche, che fanno riferimento alla stessa origine dati. I filtri presenti fanno riferimento al tempo (settimane) e altri diversi parametri. Quello che vorrei sapere è se c'è un modo (con una serie di comandi in VBA, immagino) per modificare simultaneamente il filtro tempo su tutte le pivot. Ovvero: seleziono, per esempio, settimana 3 e tutte le pivot recepiscono simultaneamente il comando, filtrando i dati per la settimana 3. Mi sarebbe davvero utile perchè le pivot sono più di 50 e passarmele una per una (tutte le settimane) è pallosissimo!
Grazie a tutti per l'aiuto!
Ciao
Giulio
a modest proposal
di canapone (utente non iscritto) data: 23/04/2013 14:04:46
Ciao,
sono a zero VBA.
Potresti crearti una colonna di servizio nel database letto dalle pivot.
Faccio un esempio: se devi isolare solo le date con num.settimana=23
Nel mio esempio nella colonna A del database ho le date, nella colonna K (la prima libera) scrivo
=NUM.SETTIMANA(A2)=$L$1
In L1 scrivo la settimana che devo far filtrare alle pivot.
Uso il campo dei NUM.SETTIMANA come campo FILTRO e lo imposto su VERO.
Basta aggiornare la pivot ed ottieni sempre il risultato ricercato.
Spero sia d'aiuto
di Giulio (utente non iscritto) data: 23/04/2013 14:39:38
Grazie mille per il suggerimento!
purtroppo però non ho accesso al database origine perchè si trova su un server esterno non visibile... :(
filtri pivot cambaiti simultaneamente
di canapone (utente non iscritto) data: 23/04/2013 16:29:15
Ciao,
prova ad adattare questo codice.
Devi copiarlo in "questa cartella lavoro".
In Vfields specifica il campo o i campi separandoli da una virgola che usi come filtro.
Esempio
vFields = Array("Settimana","CDC")
modifica adattandolo
.CurrentPage = "(A1)"
in A1 ho il primo campo filtro.
Sto adattando un codice che ho trovato in rete - ringrazio DonkeyOte di Excel Forum- che miracolosamente sono riuscito ad adattare su delle mie tabelle.
--------------------
Private Sub Workbook_SheetPivotTableUpdate(ByVal Sh As Object, ByVal Target As PivotTable)
Dim ptTable As PivotTable, ptItem As PivotItem, vFields As Variant, boolMulti As Boolean, lngField As Long
Dim ws As Worksheet
On Error GoTo ExitPoint
vFields = Array("Settimana")
Application.EnableEvents = False
For Each ws In ThisWorkbook.Worksheets
For Each ptTable In ws.PivotTables
If ptTable <> Target Or ws.Name <> Sh.Name Then
ptTable.ManualUpdate = True
For lngField = LBound(vFields) To UBound(vFields) Step 1
boolMulti = Target.PivotFields(vFields(lngField)).EnableMultiplePageItems
With ptTable.PivotFields(vFields(lngField))
.ClearAllFilters
Select Case boolMulti
Case False
.CurrentPage = Target.PivotFields(vFields(lngField)).CurrentPage.Value
Case True
.CurrentPage = "(A1)"
For Each ptItem In Target.PivotFields(vFields(lngField)).PivotItems
.PivotItems(ptItem.Name).Visible = ptItem.Visible
Next ptItem
.EnableMultiplePageItems = boolMulti
End Select
End With
Next lngField
ptTable.ManualUpdate = False
End If
Next ptTable
Next ws
ExitPoint:
Application.EnableEvents = True
End Sub
-------------------
Saluti
Vuoi Approfondire?