Risultati da 1 a 23 di 23

Discussione: Righe Dinamiche Tabella Pivot



  1. #1
    L'avatar di ric91
    Clicca e Apri
    Data Registrazione
    Feb 2016
    Località
    Voghera
    Età
    26
    Messaggi
    35
    Versione Office
    excel2013
    Likes ricevuti
    0
    Likes dati
    0

    Righe Dinamiche Tabella Pivot

    Ciao a tutti,

    Mi si presenta un problemino nella macro. Allora nella mia macro creo una tabella Pivot.Funziona tutto, il problema è che non è dinamica, ovvero che si basa sulla selezione della tabella che utilizzo per crearla. Ecco, dato che sto creando un foglio generale (un template), che poi potrò utilizzare anche successivamente, le righe e le colonne potrebbero cambiare (in questo file importerò dei dati estratti da un database). Come faccio a renderla dinamica?

    Grazie a tutti in anticipo!!

    Riccardo

    p.s. vi posto il codice

    Range("A2").Select
    Range(Selection, Selection.End(xlToRight)).Select
    Range(Selection, Selection.End(xlDown)).Select
    Sheets.Add
    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
    "Data!R2C1:R10000C28", Version:=xlPivotTableVersion15).CreatePivotTable _
    TableDestination:="Sheet1!R3C1", TableName:="PivotTable7", DefaultVersion _
    :=xlPivotTableVersion15

  2. #2

    L'avatar di Rubik72
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Cosenza
    Età
    45
    Messaggi
    2808
    Versione Office
    Excel 2013
    Likes ricevuti
    1020
    Likes dati
    979
    prova cosi:
    Codice: 
    Dim uRiga As Long
    
    
    uRiga = Range("A" & Rows.Count).End(xlUp).Row
    
    
    Sheets.Add
    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, _
        SourceData:="Data!R2C1:R" & uRiga, _
        Version:=xlPivotTableVersion15).CreatePivotTable _
        TableDestination:="Sheet1!R3C1", _
        TableName:="PivotTable7", _
        DefaultVersion:=xlPivotTableVersion15
    questa è una routine fatta senza sapere i riferimenti, sarebbe meglio se allegassi un file di esempio per poterla testare

  3. #3
    L'avatar di ric91
    Clicca e Apri
    Data Registrazione
    Feb 2016
    Località
    Voghera
    Età
    26
    Messaggi
    35
    Versione Office
    excel2013
    Likes ricevuti
    0
    Likes dati
    0
    Ho provato a fare come mi hai suggerito ma mi un errore. Mi dice che il nome della tabella è errato.
    Non ho capito cosa devo allegarti

  4. #4

    L'avatar di Rubik72
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Cosenza
    Età
    45
    Messaggi
    2808
    Versione Office
    Excel 2013
    Likes ricevuti
    1020
    Likes dati
    979
    se alleghi il tuo file, senza dati sensibili, con la macro, faccio le modifiche direttamente sul tuo file

  5. #5
    L'avatar di ric91
    Clicca e Apri
    Data Registrazione
    Feb 2016
    Località
    Voghera
    Età
    26
    Messaggi
    35
    Versione Office
    excel2013
    Likes ricevuti
    0
    Likes dati
    0
    Posso estrarre il modulo dalla macro e mandartelo, perchè allegando il file mi dice che è oltre il limite consentito

  6. #6
    L'avatar di ric91
    Clicca e Apri
    Data Registrazione
    Feb 2016
    Località
    Voghera
    Età
    26
    Messaggi
    35
    Versione Office
    excel2013
    Likes ricevuti
    0
    Likes dati
    0
    Ecco sono riuscito. Ovviamente il file contiene solo la Macro
    File Allegati File Allegati

  7. #7

    L'avatar di Rubik72
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Cosenza
    Età
    45
    Messaggi
    2808
    Versione Office
    Excel 2013
    Likes ricevuti
    1020
    Likes dati
    979
    Abbi pazienza, ma se alleghi un file vuoto come faccio a testare se la macro va bene?
    Allega almeno una decina di righe

  8. #8
    L'avatar di ric91
    Clicca e Apri
    Data Registrazione
    Feb 2016
    Località
    Voghera
    Età
    26
    Messaggi
    35
    Versione Office
    excel2013
    Likes ricevuti
    0
    Likes dati
    0
    Perdonami. Errore mio!
    Ti riallego il file.
    GRAZIE PER LA PAZIENZA E LA DISPONIBILITA'!!
    File Allegati File Allegati

  9. #9

    L'avatar di Rubik72
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Cosenza
    Età
    45
    Messaggi
    2808
    Versione Office
    Excel 2013
    Likes ricevuti
    1020
    Likes dati
    979
    Allora, devi sapere che una volta assegnato un valore ad una variabile (es. uRiga) non c'è bisogno di riassegnarla ogni volta se non cambia il valore assegnato (avevi ripetuto più volte uRiga = Range("C" & Rows.Count).End(xlUp).Row)
    Ho modificato e smaltito la routine e non va in debug, ma non ho capito cosa volevi fare con la riga evidenziata in rosso (prima ricopiava fino a riga 8000 circa io l'ho limitata a 6)
    Codice: 
    Sub Replacement_Chain()
    Dim uRiga As Long
    uRiga = Range("C" & Rows.Count).End(xlUp).Row
    
    
    Range("N3:N" & uRiga).FormulaR1C1 = "=+IF(RC1="""",RC3,"""")"
    
    
    Range("O3:O" & uRiga).FormulaR1C1 = "=+IF(RC1="""",RC5,"""")"
    
    
    Range("P3:P" & uRiga).FormulaR1C1 = _
            "=+IF(RC1="""",IF(ISNA(VLOOKUP(RC[-1],C3:C5,3,FALSE)),"""",VLOOKUP(RC[-1],C3:C5,3,FALSE)),"""")"
        
    Range("P3:AB3").AutoFill Destination:=Range("P3:AB" & uRiga)
    
    
    Range("L3" & uRiga).FormulaR1C1 = _
            "=+IF(RC1="""",OFFSET(RC14,0,(COUNTA(RC14:RC28)-COUNTIF(RC14:RC28,""""))-1),"""")"
        
    With Range("L1")
        .FormulaR1C1 = _
            "=+COUNTA(R[2]C:R[1000000]C)-COUNTIF(R[2]C:R[1000000]C,"""")"
        .Style = "Comma"
        .NumberFormat = "_-* #,##0_-;-* #,##0_-;_-* ""-""??_-;_-@_-"
    End With
    
    
        Sheets.Add before:=Sheet1
        
        Dim wsh As Worksheet
        Set wsh = ThisWorkbook.Worksheets(1)
            
        ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:="Data!R2C1:R" & uRiga & "C28", Version:=xlPivotTableVersion15).CreatePivotTable _
            TableDestination:=wsh.Cells(3, 1), _
            TableName:="PivotTable7", _
            DefaultVersion:=xlPivotTableVersion15
    
    
        Cells(3, 1).Select
        With ActiveSheet.PivotTables(1).PivotFields("Last code")
            .Orientation = xlRowField
            .Position = 1
        End With
        Range("B3").FormulaR1C1 = "Chain"
        Range("B3").Select
        With Selection.Interior
            .Pattern = xlSolid
            .PatternColorIndex = xlAutomatic
            .Color = 6299648
            .TintAndShade = 0
            .PatternTintAndShade = 0
        End With
        With Selection.Font
            .ThemeColor = xlThemeColorDark1
            .TintAndShade = 0
        End With
        Selection.Font.Bold = True
        Range("B5").FormulaR1C1 = "C1"
        Range("B6").FormulaR1C1 = "=+""C""&MID(R[-1]C,2,99)+1"
        Range("B6").AutoFill Destination:=Range("B6:B10") '<======================= DA RIVEDERE
        
        Sheets("Data").Activate  
        Range("M3:M" & uRiga).FormulaR1C1 = _
            "=+IF(RC12="""","""",VLOOKUP(RC12," & wsh.Name & "!C[-12]:C[-11],2,FALSE))"
    
    
        ActiveSheet.Range("$A$2:$AB$" & uRiga).AutoFilter Field:=10, Criteria1:="="
        
        Range("M4:M" & uRiga).FormulaR1C1 = "=+OFFSET(RC,-1,0)"
        
        Range("J3:K3").AutoFill Destination:=Range("J3:K" & uRiga)
    
    
        Range("B3").AutoFill Destination:=Range("B3:B" & uRiga)
        
        wsh.Name = "Chain Numbering"
    
    
        Range("L1").ClearContents
        
        wsh.Activate
        Selection.End(xlDown).Select
        Selection.ClearContents
    Fammi sapere

  10. #10
    L'avatar di ric91
    Clicca e Apri
    Data Registrazione
    Feb 2016
    Località
    Voghera
    Età
    26
    Messaggi
    35
    Versione Office
    excel2013
    Likes ricevuti
    0
    Likes dati
    0
    In realtà la formula andrebbe estesa fino a u riga. Comunque lanciando la macro con il nuovo codice la pivot non prende tutti i valori.

  11. #11
    L'avatar di Baloon_50
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Milano - Italy
    Età
    67
    Messaggi
    3339
    Versione Office
    2013 PC
    Likes ricevuti
    483
    Likes dati
    49
    Citazione Originariamente Scritto da ric91 Visualizza Messaggio
    In realtà la formula andrebbe estesa fino a u riga. Comunque lanciando la macro con il nuovo codice la pivot non prende tutti i valori.
    Scusate l'intromissione e scusate anche la domanda banale :
    Ma tu lo fai il refresh della pivot?

    ciao.

    A volte basta usare parole inutili come “grazie” e “per favore” per rendere la vita più bella.
    (ELKonigsburg)
    Dice il saggio : "se vuoi essere aiutato devi metter l'allegato"
    (Nick Carter - Ten)

  12. #12

    L'avatar di Rubik72
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Cosenza
    Età
    45
    Messaggi
    2808
    Versione Office
    Excel 2013
    Likes ricevuti
    1020
    Likes dati
    979
    Citazione Originariamente Scritto da ric91
    In realtà la formula andrebbe estesa fino a u riga. Comunque lanciando la macro con il nuovo codice la pivot non prende tutti i valori.
    in verità ho corretto gli errori di Debug ma non ho capito a cosa serve questa tabella Pivot

    Citazione Originariamente Scritto da Baloon_50 Visualizza Messaggio
    Scusate l'intromissione
    intromettiti pure, visto che non sono ferrato sulle Pivot

  13. #13
    L'avatar di Baloon_50
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Milano - Italy
    Età
    67
    Messaggi
    3339
    Versione Office
    2013 PC
    Likes ricevuti
    483
    Likes dati
    49
    Citazione Originariamente Scritto da Rubik72 Visualizza Messaggio
    in verità ho corretto gli errori di Debug ma non ho capito a cosa serve questa tabella Pivot


    intromettiti pure, visto che non sono ferrato sulle Pivot
    ehehehe forse io ne so meno di te :261:

    A volte basta usare parole inutili come “grazie” e “per favore” per rendere la vita più bella.
    (ELKonigsburg)
    Dice il saggio : "se vuoi essere aiutato devi metter l'allegato"
    (Nick Carter - Ten)

  14. #14
    L'avatar di ric91
    Clicca e Apri
    Data Registrazione
    Feb 2016
    Località
    Voghera
    Età
    26
    Messaggi
    35
    Versione Office
    excel2013
    Likes ricevuti
    0
    Likes dati
    0
    La pivot serve per mettere nei filtri i codici presenti nella colonna L, poi di fianco ai codici metterò una formula. Nel foglio "Data" farò una VlookUP che mi troverà il risultato della formula che ho messo precedentemente nella pivot.
    Non so se sono stato chiaro

  15. #15

    L'avatar di Rubik72
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Cosenza
    Età
    45
    Messaggi
    2808
    Versione Office
    Excel 2013
    Likes ricevuti
    1020
    Likes dati
    979
    sei stato chiaro, ma prima di tutto
    1. la formula nella colonna "L" crea un riferimento circolare, dunque andrebbe rivista;
    2. secondo me non c'è bisogno di una tabella Pivot solo per estrapolare i dati e richiamarli nel foglio Data. Se mi dici quali criteri servono per estrarre i dati si può fare tutto da VBA (spiegami passo passo come procedere)

  16. #16
    L'avatar di ric91
    Clicca e Apri
    Data Registrazione
    Feb 2016
    Località
    Voghera
    Età
    26
    Messaggi
    35
    Versione Office
    excel2013
    Likes ricevuti
    0
    Likes dati
    0
    Perchè la formula andrebbe rivista?

    Allora la pivot la creo per una ragione molto chiara:
    -Utilizzo nei filtri Rows la colonna L;
    -Di fianco applico la formula che puoi vedere
    -Nella colonna M cerco il valore che ottengo dalla formula nella pivot

    Altri modi non ne conoso se non quello di creare una pivot...

  17. #17

    L'avatar di Rubik72
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Cosenza
    Età
    45
    Messaggi
    2808
    Versione Office
    Excel 2013
    Likes ricevuti
    1020
    Likes dati
    979
    Citazione Originariamente Scritto da ric91 Visualizza Messaggio
    Perchè la formula andrebbe rivista?
    magari c'è una soluzione migliore, comunque ho rivisto il codice, prova così:
    Codice: 
    Dim uRiga As Long
    Dim i As Integer
    uRiga = Range("C" & Rows.Count).End(xlUp).Row
    
    
    
    
    Range("N3:N" & uRiga).FormulaR1C1 = "=+IF(RC1="""",RC3,"""")"
    
    
    
    
    Range("O3:O" & uRiga).FormulaR1C1 = "=+IF(RC1="""",RC5,"""")"
    
    
    
    
    Range("P3:P" & uRiga).FormulaR1C1 = _
            "=+IF(RC1="""",IF(ISNA(VLOOKUP(RC[-1],C3:C5,3,FALSE)),"""",VLOOKUP(RC[-1],C3:C5,3,FALSE)),"""")"
        
    Range("P3:AB3").AutoFill Destination:=Range("P3:AB" & uRiga) '<=== DA RIVEDERE (COSA RICOPIA???)
    
    
    
    
    Range("L3:L" & uRiga).FormulaR1C1 = _
            "=+IF(RC1="""",OFFSET(RC14,0,(COUNTA(RC14:RC28)-COUNTIF(RC14:RC28,""""))-1),"""")"
            
    With Range("L1")
        .FormulaR1C1 = _
            "=+COUNTA(R[2]C:R[1000000]C)-COUNTIF(R[2]C:R[1000000]C,"""")"
        .Style = "Comma"
        .NumberFormat = "_-* #,##0_-;-* #,##0_-;_-* ""-""??_-;_-@_-"
    End With
    
    
    
    
        Sheets.Add before:=Sheet1
        
        Dim wsh As Worksheet
        Set wsh = ThisWorkbook.Worksheets(1)
            
        ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:="Data!R2C1:R" & uRiga & "C28", Version:=xlPivotTableVersion15).CreatePivotTable _
            TableDestination:=wsh.Cells(3, 1), _
            TableName:="PivotTable7", _
            DefaultVersion:=xlPivotTableVersion15
    
    
        Cells(3, 1).Select
        With ActiveSheet.PivotTables(1).PivotFields("Last code")
            .Orientation = xlRowField
            .Position = 1
        End With
        Range("B3").FormulaR1C1 = "Chain"
        Range("B3").Select
        With Selection.Interior
            .Pattern = xlSolid
            .PatternColorIndex = xlAutomatic
            .Color = 6299648
            .TintAndShade = 0
            .PatternTintAndShade = 0
        End With
        With Selection.Font
            .ThemeColor = xlThemeColorDark1
            .TintAndShade = 0
        End With
        Selection.Font.Bold = True
        Range("B5").FormulaR1C1 = "C1"
        
        i = 6
        Do Until wsh.Cells(i, 1) = "Totale complessivo"
            wsh.Cells(i, 2).FormulaR1C1 = "=+""C""&MID(R[-1]C,2,99)+1"
            i = i + 1
        Loop
        
        Sheets("Data").Activate
        Range("M3:M" & uRiga).FormulaR1C1 = _
            "=+IF(RC12="""","""",VLOOKUP(RC12," & wsh.Name & "!C[-12]:C[-11],2,FALSE))"
    
    
    
    
        ActiveSheet.Range("$A$2:$AB$" & uRiga).AutoFilter Field:=12, Criteria1:="="
        
        Range("M4:M" & uRiga).FormulaR1C1 = "=+OFFSET(RC,-1,0)"
        
        Range("J3:K3").AutoFill Destination:=Range("J3:K" & uRiga)
    
    
    
    
        Range("B3").AutoFill Destination:=Range("B3:B" & uRiga)
        
        wsh.Name = "Chain Numbering"
    
    
    
    
        Range("L1").ClearContents
        
        wsh.Activate
        wsh.Range(Cells(5, 2), Cells(i - 1, 2)).ClearContents

  18. #18
    L'avatar di ric91
    Clicca e Apri
    Data Registrazione
    Feb 2016
    Località
    Voghera
    Età
    26
    Messaggi
    35
    Versione Office
    excel2013
    Likes ricevuti
    0
    Likes dati
    0
    Mi sfugge qualche passaggio...
    1) - Range("P3:AB3").AutoFill Destination:=Range("P3:AB" & uRiga) '<=== DA RIVEDERE (COSA RICOPIA???)

    Forse sbaglio io, ma il senso è che nella colonna P ci va la formula sopra, dopo, per non fare gli autofill per le restanti colonne seleziono il range e tracino la formula..é come nella colonna N o O, solo che seleziono il range, essendo la formula uguale per tutte le colonne restanti.


    2) Nel codice della pivot, quel i=6 sta ad indicare il numero di righe?

  19. #19

    L'avatar di Rubik72
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Cosenza
    Età
    45
    Messaggi
    2808
    Versione Office
    Excel 2013
    Likes ricevuti
    1020
    Likes dati
    979
    Era un commento che ho messo durante l'analisi della routine e che ho dimenticato di eliminare.
    La "i" è una variabile che conta le righe fino a che trova una riga vuota.
    Funziona?

    Inviato dal mio Nexus 7 utilizzando Tapatalk

  20. #20
    L'avatar di ric91
    Clicca e Apri
    Data Registrazione
    Feb 2016
    Località
    Voghera
    Età
    26
    Messaggi
    35
    Versione Office
    excel2013
    Likes ricevuti
    0
    Likes dati
    0
    Sta elaborando =)

    Curiosità sul tuo PC quanto tempo ci mette? SUl mio una vita

  21. #21

    L'avatar di Rubik72
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Cosenza
    Età
    45
    Messaggi
    2808
    Versione Office
    Excel 2013
    Likes ricevuti
    1020
    Likes dati
    979
    C'è qualcosa che non va, il ciclo dovrebbe impiegare attimi. Eseguilo passò passò (con F8) per vedere come si comporta e se ci sono problemi

    Inviato dal mio Nexus 7 utilizzando Tapatalk

  22. #22
    L'avatar di ric91
    Clicca e Apri
    Data Registrazione
    Feb 2016
    Località
    Voghera
    Età
    26
    Messaggi
    35
    Versione Office
    excel2013
    Likes ricevuti
    0
    Likes dati
    0
    Funziona tutto correttamente.
    Grazie a tutti per la disponibilità e i consigli!!

  23. #23
    L'avatar di Ippo89
    Clicca e Apri
    Data Registrazione
    Feb 2016
    Località
    Genova
    Età
    28
    Messaggi
    8
    Versione Office
    excel 2013
    Likes ricevuti
    0
    Likes dati
    1
    Penso mi possa servire anche a me a breve.. spero di capirci qualcosa.. un ringraziamento anche da parte mia!

Discussioni Simili

  1. Risposte: 18
    Ultimo Messaggio: 29/07/16, 17:07
  2. Tabella Pivot
    Di andrea1988mi nel forum Domande su Excel in generale
    Risposte: 1
    Ultimo Messaggio: 14/07/16, 13:50
  3. Tabella Pivot
    Di joe22 nel forum Domande su Excel in generale
    Risposte: 22
    Ultimo Messaggio: 01/02/16, 10:15
  4. riempire tutte le righe tabella pivot
    Di guidoald nel forum Domande su Excel in generale
    Risposte: 6
    Ultimo Messaggio: 25/06/15, 19:29
  5. riempire tutte le righe tabella pivot
    Di guidoald nel forum Domande su Excel in generale
    Risposte: 1
    Ultimo Messaggio: 25/06/15, 19:21

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •