Condividi tramite

Tabelle Pivot - espandi campo

Anonimo
2014-09-22T12:52:41+00:00

Buongiorno,

su un folglio excel ho 2 tabelle pivot affiancate.

Entrambe fanno riferimento alla stessa origine dati

La prima è filtrata su un campo specifico

La seconda non è filtrata

Per ogni riga è possibile espandere il campo riga.

Sto cercando di impostare una sub che all'espansione del campo in tabella pivot 1, espanda lo stesso campo in tabella pivot 2

qualcosa del tipo:

Private Sub espandi_campo()

If ActiveSheet.PivotTables("Tabella_pivot1").PivotFields("Area").PivotItems("Provincia").ShowDetail = True Then

ActiveSheet.PivotTables("Tabella_pivot2").PivotFields("Area").PivotItems("Provincia").ShowDetail = True

End If

End Sub

che però non funziona.

Dove sbaglio ?

Grazie

TT

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

6 risposte

Ordina per: Più utili
  1. Anonimo
    2014-09-24T16:33:23+00:00

    Ovviamente l'esempio funziona.

    Non funziona sulle pivot che ho io.

    Dipende forse dal fatto che la base dati non è nella stessa cartella delle pivot ?

    L'origine dati della Pivot è su un file excel diverso e prende i dati da 2 fogli distinti mediante una query così strutturata:

    SELECT [anno_precedente$].* FROM [anno_precedente$]  

    UNION ALL  

    SELECT [anno_corrente$].* FROM [anno_corrente$]

    TT

    Il mio è un esempio che richiede un piccolo intervento da parte tua, visto e considerato che non so come si chiamano i campi utilizzati nelle pivot né tanto meno come sono strutturate.

    La query non mi aiuta granché, avrei piuttosto gradito la struttura delle due tabelle pivot, se vuoi allegarle ...

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2014-09-24T14:24:24+00:00

    Ovviamente l'esempio funziona.

    Non funziona sulle pivot che ho io.

    Dipende forse dal fatto che la base dati non è nella stessa cartella delle pivot ?

    L'origine dati della Pivot è su un file excel diverso e prende i dati da 2 fogli distinti mediante una query così strutturata:

    SELECT [anno_precedente$].* FROM [anno_precedente$]  

    UNION ALL  

    SELECT [anno_corrente$].* FROM [anno_corrente$]

    TT

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2014-09-23T14:26:13+00:00

    Buongiorno,

    ho inserito la macro.

    Se la faccio partire, "cicla" tante volte quanti sono i campi ma senza espanderli.

    ...

    Infatti la macro fa esattamente quello che chiedi. Evidentemente la struttura della pivot che hai indicato nel tuo codice non corrisponde.

    Guarda questo esempio.

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2014-09-23T13:44:48+00:00

    Buongiorno,

    ho inserito la macro.

    Se la faccio partire, "cicla" tante volte quanti sono i campi ma senza espanderli.

    Quello che vorrei ottenere è:

    clicco sul pulsante Area1: si espande il campo area1 per tabella_pivot1 e per tabella_pivot2

    clicco sul pulsante Area2: si espande il campo area2 per tabella_pivot1 e per tabella_pivot2

    ......

    ......

    idem quando comprimo il campo

    L'opzione che mi suggerisci, di utilizzare l'evento PivotTable dovrebbe fare al caso mio.

    Non sono però in grado di implementarla.

    Grazie

    TT

    La risposta è stata utile?

    0 commenti Nessun commento
  5. Anonimo
    2014-09-23T09:29:53+00:00

    ...

    Dove sbaglio ?

    Se realmente le due tabelle pivot hanno lo stessa struttura, prova con la macro allegata.

    Macro che potrebbe anche essere avviata automaticamente ad ogni modifica della pivot principale, sfruttando l'evento PivotTable dell'oggetto Worksheet.


    Sub SyncShowDetails()

    Dim pfSource As PivotField, pfTarget As PivotField

    Dim pi As PivotItem

      On Error GoTo Uffa

      With ActiveSheet

        Set pfSource = .PivotTables("Tabella_pivot1").PivotFields("Area")

        Set pfTarget = .PivotTables("Tabella_pivot2").PivotFields("Area")

        For Each pi In pfTarget.PivotItems

          pfTarget.PivotItems(pi.Name).ShowDetail = pfSource.PivotItems(pi.Name).ShowDetail

        Next

      End With

      Exit Sub

    Uffa:

      MsgBox Err.Number & vbNewLine & Err.Description

    End Sub


    La risposta è stata utile?

    0 commenti Nessun commento