Allora....
Aggiungi al tuo file un foglio chiamato Z_RIEPILOGO e un altro chiamato PIVOT.
Inserisci in un Modulo standard del vba questa macro:
- Codice: Seleziona tutto
Sub ZRiep()
Dim tSh As Worksheet, I As Long, iGnora, myNext As Long, cLast As Long
Dim hShI As Long, myMatch
'
Set tSh = Sheets("Z_RIEPILOGO") '<<<1 Il foglio in cui si crea ex-novo il riepilogo
iGnora = Array("RIASSUNTO", "Z_RIEPILOGO", "NON COMPILARE", "PIVOT") '<<<2 I Fogli da ignorare
tSh.Cells.ClearContents
For I = 1 To Worksheets.Count
myNext = tSh.Cells(Rows.Count, "P").End(xlUp).Row + 1
With Sheets(I)
myMatch = Application.Match(.Name, iGnora, 0)
If IsError(myMatch) Then
If hShI = 0 Then hShI = I
cLast = Evaluate("max(row(" & .Name & "!7:2000)*(len(" & .Name & "!O7:O2000)>2))")
If cLast < 8 Then cLast = 8
tSh.Cells(myNext, 2).Resize(cLast - 7, 15).Value = .Range(.Range("A8"), .Cells(cLast, "O")).Value
tSh.Cells(myNext, 1).Resize(cLast - 7, 1).Value = .Range("D1").Value
End If
End With
Next I
tSh.Cells(1, 1) = "Esempio"
For I = 1 To 15
If Sheets(hShI).Cells(7, I).Value <> "" Then
tSh.Cells(1, I + 1) = Sheets(hShI).Cells(7, I).Value
Else
tSh.Cells(1, I + 1) = Chr(65 + I) & Chr(65 + I)
End If
Next I
'Sheets("PIVOT").Range("A4").PivotTable.PivotCache.Refresh
End Sub
Personalizza le righe marcate <<< come da commenti; in particolare nella riga <<<2 inserirai, in quel formato, tutti i fogli il cui contenuto non deve essere riepilogato.
Poi manda in esecuzione la Sub ZRiep.
Essa CANCELLA SENZA PREAVVISO tutto il contenuto del foglio Z_RIEPILOGO, poi scorre i fogli e riporta in Z_RIEPILOGO il contenuto di quelli che sembrano da riepilogare.
A questo punto avrai un elenco in cui in colonna A c'e' il none dell'esempio, prelevato da D1 dei fogli copiati, e in colonna B:P c'e' il contenuto delle colonne A:O dei fogli copiati.
Ho usato colonna O per identificare la fine dell'elenco, ma mi lascia perplesso che in alcune celle ci sia un valore in altre, fino a riga 1290, ci sono delle formule.
Una volta avuto in foglio Z_Riepilogo il riepilogo del contenuto di tutti i fogli potrai con una tabella pivot ottenere la tabella che ti interessa:
-seleziona le colonne A:P del foglio Z_RIEPILOGO
-Alt-D-B per avviare il wizard della tabella pivot
-premere Avanti, Avanti; spuntare "Foglio di lavoro esistente" come destinazione della tabella pivot
-selezionare foglio PIVOT e selezionare cella A2; premere Fine
-verra' mostrata la struttura di una tabella pivot generica, e sulla destra l'elenco dei campi disponibili
-trascinare la voce Esempio nell'area Etichette di colonne
-trascinare la voce Materiale utilizzato nell'area Etichette di riga
-trascinare la voce Consumi nell'area Valori; fare in modo che compaia Media di consumo (seleziona la visualizzazione corrente, usa la voce Impostazione campo valori)
Quando inserisci un nuovo foglio allora devi rilanciare la Sub ZRiep e poi aggiornare la pivot table; dopo aver creato nel tuo file la struttura di fogli come descrita inizialmente e la tabella pivot come appena descritta allora puoi eliminare l'apostrofo all'inizio della riga
'Sheets("PIVOT").Range("A4").PivotTable.PivotCache.Refresh , in modo che la stessa macro che aggiorna il foglio Z_RIEPILOGO aggiorna anche la tabella pivot.
Ciao