Modifica filtri Pivot



  • 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