Condividi:        

pivot con range dati variabile

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

pivot con range dati variabile

Postdi mirmidone21 » 12/08/22 18:24

buonasera
ho aperto un nuovo topic non sapendo se potevo accodarlo alla precedente discussione.

in pratica, sempre in riferimento al file precedente dove avevo chiesto come evidenziare celle in base ad un determinato valore,
ho aggiunto una pivot ma con riferimento a righe dinamiche perchè possono cambiare di volta in volta.
ho dichiarato le variabili ma va in errore. -- "errore di runtime 5 chiamata di routine o argomento non valido"
dove sto sbagliando??
riallego il file con macro

https://we.tl/t-smzleKy0Gq

e l'immagine con errore

Immagine


Codice: Seleziona tutto
Sub Macro2()
'
' Macro2 Macro
'

'
    Dim sh As Worksheet
    Dim s As String
    Sheets.Add
    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
        "Foglio1!" & s _
        , Version:=xlPivotTableVersion10).CreatePivotTable TableDestination:= _
        "Foglio2!R3C1", TableName:="Tabella pivot1", DefaultVersion:=8
    Sheets("Foglio2").Select
    Cells(3, 1).Select
    With ActiveSheet.PivotTables("Tabella pivot1").PivotFields("TIPO")
        .Orientation = xlRowField
        .Position = 1
    End With
    With ActiveSheet.PivotTables("Tabella pivot1").PivotFields("DATA INZIO")
        .Orientation = xlRowField
        .Position = 2
    End With
    ActiveSheet.PivotTables("Tabella pivot1").PivotFields("DATA INZIO").AutoGroup
End Sub
Windows 7 sp1 -- Office 2013
Intel i5 4430 -- 3.00 ghz ---- 4gb RAM
mirmidone21
Utente Senior
 
Post: 149
Iscritto il: 26/10/15 16:48

Sponsor
 

Re: pivot con range dati variabile

Postdi Anthony47 » 12/08/22 18:40

Perdona, ma da una macro che non fa quel che vorresti fare non si capisce che cosa vorresti fare :D Insomma serve un "supplemento di descrizione"
Avatar utente
Anthony47
Moderatore
 
Post: 19439
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: pivot con range dati variabile

Postdi mirmidone21 » 12/08/22 19:14

voglio semplicemente inserire una pivot dove le righe possono cambiare.
es. oggi sono 14 range da A1:A14 a D1:D14
e domani possono essere 20 da A1:A20 a D1:D20
Windows 7 sp1 -- Office 2013
Intel i5 4430 -- 3.00 ghz ---- 4gb RAM
mirmidone21
Utente Senior
 
Post: 149
Iscritto il: 26/10/15 16:48

Re: pivot con range dati variabile

Postdi mirmidone21 » 12/08/22 19:55

hai ragione ho fatto un pò di confusione.
la macro giusta è questa
Codice: Seleziona tutto
Sub Macro2()
'
' Macro2 Macro
'

'
    Application.CutCopyMode = False
    Sheets.Add
    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
        "Foglio1!R1C1:R14C4", Version:=8).CreatePivotTable TableDestination:= _
        "Foglio2!R3C1", TableName:="Tabella pivot1", DefaultVersion:=8
    Sheets("Foglio2").Select
    Cells(3, 1).Select
    With ActiveSheet.PivotTables("Tabella pivot1").PivotFields("CODICE")
        .Orientation = xlRowField
        .Position = 1
    End With
    ActiveSheet.PivotTables("Tabella pivot1").AddDataField ActiveSheet.PivotTables( _
        "Tabella pivot1").PivotFields("GIORNI"), "Somma di GIORNI", xlSum
End Sub


il file è questo

https://we.tl/t-41Te3MVDtz

io vorrei sostituire questa parte di codice con un'istruzione dinamica che tenga conto del variare delle righe.
"Foglio1!R1C1:R14C4"
con una variabile oppure con un'istruzione tipo: .Cells(1,1).CurrentRegion
purtroppo con i vari tentativi mi va sempre in errore.


chiedo scusa per la confusione :oops:
Windows 7 sp1 -- Office 2013
Intel i5 4430 -- 3.00 ghz ---- 4gb RAM
mirmidone21
Utente Senior
 
Post: 149
Iscritto il: 26/10/15 16:48

Re: pivot con range dati variabile

Postdi Anthony47 » 13/08/22 11:56

Ma tu crea la tabella pivot manualmente, selezionando non A1:D14, ma A:D (le intere colonne).
In questo modo ti bastera' fare "Aggiorna" della tabella pivot e i dati verranno aggiornati. Se preferisci ti registri una macro mentre esegui Aggiorna della pivot, così bastera' avviare questa macro per avere i dati aggiornati.
Se preferisci, agganci questa macro macro all'evento "attivazione foglio" in modo che la pivot si aggiorni tutte le volte che selezioni il foglio che la contiene.
Il tutto si puo' ridurre a:
Codice: Seleziona tutto
Private Sub Worksheet_Activate()
    Range("A4").PivotTable.PivotCache.Refresh   '<<<
End Sub

La riga marcata <<< deve puntare a una cella della tabella
Il codice va messo nel modulo vba del foglio che contiene la tabella pivot:
-tasto dx sul nome del foglio; scegli Visualizza codice
-copia il codice e incollalo nel frame di destra

Se vuoi lavorare con la vera area di origine, allora vale sempre il suggerimento di creare inizialmente "a mano" la tabella pivot; poi all'occorrenza ne cambi i dati di origine con una macro come questa:
Codice: Seleziona tutto
Sub PivtUpdate()
Dim NewAdr As String
'
NewAdr = Sheets("Foglio1").Range("A1").CurrentRegion.Address(, , xlR1C1, True)

Sheets("Foglio2").PivotTables(1).ChangePivotCache ActiveWorkbook. _
    PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
    NewAdr, Version:=8)
End Sub

Nel codice vanno inseriti i nomi giusti dei fogli di lavoro e il giusto "indice" della tabella pivot (se ce ne fosse piu' di 1 sul foglio)
Avatar utente
Anthony47
Moderatore
 
Post: 19439
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: pivot con range dati variabile

Postdi mirmidone21 » 13/08/22 20:34

adesso funziona, grazie di tutto ed in particolare dei preziosi suggerimenti.
Windows 7 sp1 -- Office 2013
Intel i5 4430 -- 3.00 ghz ---- 4gb RAM
mirmidone21
Utente Senior
 
Post: 149
Iscritto il: 26/10/15 16:48


Torna a Applicazioni Office Windows


Topic correlati a "pivot con range dati variabile":


Chi c’è in linea

Visitano il forum: Nessuno e 25 ospiti