Domanda:
Il foglio base è composto da una serie di schede su ciascuna delle quali ho sviluppato dei conteggi
Vorrei riportare su un foglio riepilogativo solo i totali.
Vorrei quindi sul foglio riepilogativo riportare:
a1=f.base!a6, b1=f.base!a7 c1=f.base!a15
a2=f.base!a53 b2=f.base!a54, c2=f.base!a62
a3=f.base!a100 b3=f.base!a101 c3=f.base!a109.
Praticamente la distanza tra i dati di partenza è di 47 righe. Ho provato a fare con la funzione
=scarto(f.base!a6;47;0), ma vale solo per la seconda riga. Come faccio a riprodurre tale intervallo per 86 volte?
Risposta:
Si può risolvere con codice VBA.
Nel foglio “f.base” ho inserito una colonna dove inserire un’etichetta che identifica il tipo di totale.
(TotaleA, TotaleB, TotaleC). La macro che segue va a leggere le etichette e ne riporta il valore nel foglio “Riepilgo” mettendole nelle 3 colonne indicate nella domanda.
Set BaseDati = Worksheets(“f.base”) ‘Nome del foglio modificabile
Set Riepilogo = Worksheets(“RIEPILOGO”) ‘Nome del foglio modificabile
Last_Row_Riepilogo = Riepilogo.Cells.Find(“*”, SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
‘Pulisco tabella Riepilogo se contiene dati (Last_Row_Riepilogo > 1) If Last_Row_Riepilogo > 1 Then Riepilogo.Select Riepilogo.Range(Cells(2, 1), Cells(Last_Row_Riepilogo, 3)).ClearContents End If
‘Calcolo l’ultima riga non vuota della base dati Last_Row_BaseDati = BaseDati.Cells.Find(“*”, SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
NomeEtichetta1 = “TotaleA” ‘Valore dell’etichetta modificabile NomeEtichetta2 = “TotaleB” ‘Valore dell’etichetta modificabile NomeEtichetta3 = “TotaleC” ‘Valore dell’etichetta modificabile
For i = 1 To Last_Row_BaseDati
If BaseDati.Cells(i, 1) = NomeEtichetta1 Then
Last_Row_Riepilogo_A = Riepilogo.Range(“A65536”).End(xlUp).Row
Riepilogo.Cells(Last_Row_Riepilogo_A + 1, 1) = BaseDati.Cells(i, 2)
ElseIf BaseDati.Cells(i, 1) = NomeEtichetta2 Then
Last_Row_Riepilogo_B = Riepilogo.Range(“B65536”).End(xlUp).Row
Riepilogo.Cells(Last_Row_Riepilogo_B + 1, 2) = BaseDati.Cells(i, 2)
ElseIf BaseDati.Cells(i, 1) = NomeEtichetta3 Then
Last_Row_Riepilogo_C = Riepilogo.Range(“C65536”).End(xlUp).Row
Riepilogo.Cells(Last_Row_Riepilogo_C + 1, 3) = BaseDati.Cells(i, 2)
End If
Next i
A voi il file:
APRI
Riccardo Vincenti
Riccardo Vincenti
Ultimi post di Riccardo Vincenti (vedi tutti)
- 073. Duplicare righe excel modificando il contenuto - 6 Ottobre 2017
- 072. Estrazione numeri casuali - 6 Ottobre 2017
- 071. Estrazione casuale valori da un elenco - 5 Ottobre 2017
- 070. Contare dati univoci senza Pivot - 21 Settembre 2017
- 069. Aggiungere intervalli ad una data: Date Add in Excel - 21 Settembre 2017