Pivot table add calculated item



  • Pivot table - add calculated item
    di lucippo (utente non iscritto) data: 28/11/2012 11:01:48

    Ciao ragazzi,

    ho una pivot table nella quale vado semplicemente a contare dei valori. Il risultato del conta valori viene mostrato in colonna 2 e 3 della pivot.
    Vorrei aggiungere una formula direttamente nella pivot nella quarta colonna (non voglio utilizzare la formual GETPIVOTDATA!!) tale che la formula mi calcoli il rapporto tra i valori contati nella seconda colonna e i valori contati nella terza colonna della stessa pivot.
    Sbirciando su internet ho visto che c'e' la possibilita' di inserite calculated item or calculated field ma non riesco a farlo funzionare!!



  • di lucippo (utente non iscritto) data: 28/11/2012 11:06:36

    ho inserito l'allegato per agevolare la comprensione del mio problema


  • Pivot table - add calculated item
    di rplacanica (utente non iscritto) data: 28/11/2012 11:55:00

    Ciao,
    ti allego il parte del mio codice che crea tutti i campi calcolati per le varianze tra actual e budget e tra actual e anno precedente.
    nei campi calcolati inserisci ovviamente le formule che devono contenere i nomi dei campi originari.
    se non sono stato comprensibile, ai una prova con il registratore per comprendere meglio.
    Ricordati che devi dire anche l'ordine in cui vuoi i campi e dove li vuoi disporre.
    Per comodità, formatto tutto come piace a me e modifico la descrizione "caption" (magari ti serve....)
     
    Dim objPCch As Excel.PivotCache
    Dim objPTbl As Excel.PivotTable
    
    ' ometto tutto il resto perchè non interessante
    
    'aggiungo i campi calcolati
    
        objPTbl.CalculatedFields.Add "Var €", _
            "='ACT T.O. 12' -'BGT T.O. 12'", True
        objPTbl.CalculatedFields.Add "Var € %", _
            "=IF('BGT T.O. 12' =0,0,'Var €' /'BGT T.O. 12' )", True
        objPTbl.CalculatedFields.Add "Var Qty", _
            "='ACT QTY ''12' -'BGT QTY ''12'", True
        objPTbl.CalculatedFields.Add "Var Qty %", _
            "= IF('BGT QTY ''12' =0,0,'Var Qty' /'BGT QTY ''12' )", True
        objPTbl.CalculatedFields.Add "Var € PY", _
            "='ACT T.O. 12' -'PY T.O. 11'", True
        objPTbl.CalculatedFields.Add "Var € PY%", _
            "=IF('PY T.O. 11' =0,0,'Var € PY' /'PY T.O. 11')", True
        objPTbl.CalculatedFields.Add "Var Qty PY", _
            "='ACT QTY ''12'-'PY QTY ''11'", True
        objPTbl.CalculatedFields.Add "Var Qty PY%", _
            "=IF('PY QTY ''11' =0,0,'Var Qty PY' /'PY QTY ''07' )", True
        objPTbl.CalculatedFields.Add "AVG €", _
            "='ACT T.O. 12' /'ACT QTY ''12'", True
        objPTbl.CalculatedFields.Add "AVG € BGT", _
            "='BGT T.O. 12'/'BGT QTY ''12'", True
        objPTbl.CalculatedFields.Add "€ EFF", _
            "=('AVG €'-'AVG € BGT')*'BGT QTY ''12'", True
        objPTbl.CalculatedFields.Add "QTY EFF", _
            "=('Var Qty' *'AVG €' )", True
        objPTbl.PivotFields("Var €").Orientation = _
            xlDataField
        objPTbl.PivotFields("Var € %").Orientation = _
            xlDataField
        objPTbl.PivotFields("Var Qty").Orientation = _
            xlDataField
        objPTbl.PivotFields("Var Qty %").Orientation _
            = xlDataField
       objPTbl.PivotFields("Var € PY").Orientation = _
            xlDataField
        objPTbl.PivotFields("Var € PY%").Orientation = _
            xlDataField
        objPTbl.PivotFields("Var Qty PY").Orientation = _
            xlDataField
        objPTbl.PivotFields("Var Qty PY%").Orientation _
            = xlDataField
        objPTbl.PivotFields("€ EFF").Orientation _
            = xlDataField
        objPTbl.PivotFields("QTY EFF").Orientation _
            = xlDataField
            
        ActiveSheet.PivotTables("Tabella_pivot2").DataPivotField.PivotItems( _
            "Somma di Var €").Position = 3
        ActiveSheet.PivotTables("Tabella_pivot2").DataPivotField.PivotItems( _
            "Somma di Var € %").Position = 4
        ActiveSheet.PivotTables("Tabella_pivot2").PivotSelect _
            "'Somma di Var € PY':'Somma di Var € PY%'", xlDataAndLabel, True
        ActiveSheet.PivotTables("Tabella_pivot2").PivotSelect _
            "'Somma di Var € PY':'Somma di Var € PY%'", xlDataAndLabel, True
        ActiveSheet.PivotTables("Tabella_pivot2").DataPivotField.PivotItems( _
            "Somma di Var € PY").Position = 6
        ActiveSheet.PivotTables("Tabella_pivot2").DataPivotField.PivotItems( _
            "Somma di Var € PY%").Position = 7
        ActiveSheet.PivotTables("Tabella_pivot2").PivotSelect _
            "'Somma di Var Qty':'Somma di Var Qty %'", xlDataAndLabel, True
        ActiveSheet.PivotTables("Tabella_pivot2").DataPivotField.PivotItems( _
            "Somma di Var Qty").Position = 10
        ActiveSheet.PivotTables("Tabella_pivot2").DataPivotField.PivotItems( _
            "Somma di Var Qty %").Position = 11
            
    'formatta la varianza percentuale come percentuale
        With objPTbl.PivotFields("Somma di Var € %")
            .NumberFormat = "0%;[Red](0%)"
        End With
        
        With objPTbl.PivotFields("Somma di Var € PY%")
            .NumberFormat = "0%;[Red](0%)"
        End With
    
        With objPTbl.PivotFields("Somma di Var Qty %")
            .NumberFormat = "0%;[Red](0%)"
        End With
        
        With objPTbl.PivotFields("Somma di Var Qty PY%")
            .NumberFormat = "0%;[Red](0%)"
        End With
    
    'rinomina i delta
        objPTbl.DataPivotField.PivotItems _
            ("Somma di VAR €").Caption = "Var €."
        objPTbl.DataPivotField.PivotItems _
            ("Somma di Var € %").Caption = "Var.€%"


  • Pivot table - add calculated item
    di rplacanica (utente non iscritto) data: 28/11/2012 12:10:29

    ps. ho allegato il codice, ma non riesco a scaricare il tuo allegato... da pc il firewall mi blocca :(
    non riesco quindi a capire quale sia il problema...



  • di lucippo (utente non iscritto) data: 28/11/2012 12:19:55

    grazie ma cio' di cui ho bisogno non e' codice VBA bensi' vorrei aggiungere una formula direttamente nella pivot nella quarta colonnala che calcoli il rapporto tra il valore in terza e quello in seconda colonna



  • di rplacanica (utente non iscritto) data: 28/11/2012 15:04:23

    di solito è suff inserire la formula richiamando "campo calcolato" dalla icona Formule della scheda pivot (excel 07-10) o inserisci "campo calcolato" per gli excel precedenti, richiamandolo da tasto destro su tb pivot.
    la formula la inserisci come faresti normalmente in excel
    ="pivot_campo_1" / "pivot_campo_2"
    puoi utilizzare tutte le funzioni presenti normalmente in excel; se hai dei valori di testo nelle celle del database da cui attingi per fare la pivot la cosa non funziona e ottieni "#n/d" o "Valore!"



  • di lucippo (utente non iscritto) data: 28/11/2012 15:13:28

    si certo, e' proprio questo quello di cui avrei bisogno, ma non riesco a capire la sintassi giusto per scrivere ="pivot_campo_1" / "pivot_campo_2"
    come faccio a trovare il nome esatto di "pivot_campo_1"?



  • di rplacanica (utente non iscritto) data: 28/11/2012 16:18:31

    che versione di excel hai? se hai 2007
    scheda sturmenti tabella pivot
    opzioni
    formule
    campo calcolato
    si apre una finestra dove hai
    nome: "campo1" editabile a piacere
    Formula= "è la formula che deve essere calcolata
    in basso poi hai l'elenco campi (sono le intestazioni del database da cui hai preso i dati)
    campo 1 es "prodotto"
    campo 2 es "quantità"
    campo 3 es "prezzo"
    ...
    se la formula deve calcolare il ricavo, inserirai
    Formula = "quantità" * "prezzo"
    se la formula deve aumentare del 15% il prezzo...
    Formula = "prezzo"*1.15
    ecc
    ecc



  • di lucippo (utente non iscritto) data: 28/11/2012 16:39:06

    ho excel 2007 in inglese.
    lo so, ma il mio problema e' che gli unici due campi che ho nella pivot sono "count of pack" e "count of status". ho bisogno di fare il rapporto fra i due ma seguendo la procedura, riesco a vedere nell'elenco campi (quelli che tu indichi come campo 1 = prodotto, campo 2 "quantita'" etc etc) solo i campi originali "pack" e "status" e non invece quelli che mi servono per il rapporto ovvero "count of pack" e "count of status".
    la formula devere essere del tipo ("count of pack" /"count of status") o nel tuo esempio ("count of prodotti" /"count of prezzo")

    un altro piccolo sforzo e forse ce la facciamo!!!



  • di rplacanica (utente non iscritto) data: 28/11/2012 19:28:40

    count of pack / count of status...
    mi sa che non riesci a fare molto...
    "count of" mi fa pensare che il database ha al suo interno dei valori di tipo testo (es status = aperto/chiuso ,si/no)
    difficilmente riesce a dividere



  • di lucippo (utente non iscritto) data: 29/11/2012 08:52:30

    esatto, la base dati ha valori di tipo testo, ma poi con il "count of status" ottendo un valore numerico, ed è proprio questo valore numerico che mi serve per fare il rapporto