Tabella pivot di Excel: come preservare il filtro e l'ordinamento quando i dati vengono aggiornati


0

Ho una tabella pivot (Excel 2010). Ogni volta che aggiorno i dati e faccio un aggiornamento, l'ordinamento e i filtri della tabella pivot vengono persi in modo repsettivo. Devo esplicitamente modificare il filtro (selezionare tutto e rimuovere quelli che non sono necessari).

Qualche soluzione per questo?

  • Come posso cambiare il filtro tramite VBA quando la tabella pivot viene aggiornata?
  • Come posso modificare l'ordinamento tramite VBA quando la tabella pivot viene aggiornata?
  • Come posso attivare un aggiornamento della tabella pivot quando i dati cambiano?

Grazie in anticipo Saluti marchio


Sono tentato di utilizzare una registrazione macro per modificare il filtro. Ma mentre cerco di eseguire in seguito la macro risponde con l'errore "Impossibile impostare la proprietĂ  Visible della classe PivotItem". qualche idea? ActiveSheet.PivotTables("PivotTable6").PivotFields("OWASP 2010").PivotItems("(blank)").Visible = False
megloff

Risposte:


0

Potrei ottenere quello che volevo. Ho semplicemente registrato prima una Macro per vedere i dettagli su quali oggetti devono essere utilizzati. Successivamente ho finito la cosa facendo un'ottimizzazione. Si prega di fare riferimento al seguente estratto del codice, forse utile per gli altri.

Per quanto riguarda l'ordinamento, ho trovato in un forum il suggerimento che dovresti assegnare ad un'altra colonna "ordinamento" nella tabella dei dati di origine e usarla come colonna nascosta nella tabella pivot in modo da poter definire l'ordinamento usando quel campo. Anche questo non si perde quando in seguito cambi i dati.

Sub Macro1()
On Error GoTo Fehler
Application.ScreenUpdating = False
With ActiveWorkbook.Sheets("Rating").PivotTables(1)
.PivotFields("OWASP 2010").ClearAllFilters
With .PivotFields("OWASP 2010")

    If .PivotItems("(blank)").Visible = True Then
        .PivotItems("(blank)").Visible = False
    End If
    ' uncomment this sectin in case you liek to change the sorting via vba
    ' 1. sort first the stuff automatically A-Z
    '.AutoSort xlAscending, "OWASP 2010"
    ' 2. move empty values to the end
    'If .PivotItems(" ").Position <> .PivotItems.Count - 1 Then
    '    .PivotItems(" ").Position = .PivotItems.Count - 1
    'End If
 End With
.PivotFields("Categories").ClearAllFilters
With .PivotFields("Fortify Categories")
     If .PivotItems("0").Visible = True Then
        .PivotItems("0").Visible = False
     End If
     If .PivotItems("(blank)").Visible = True Then
        .PivotItems("(blank)").Visible = False
    End If
End With
End With
Application.ScreenUpdating = True
Exit Sub
Fehler:
Application.ScreenUpdating = True
End Sub

Saluti marchio

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.