027. Riportare il contenuto di determinate celle da un foglio ad un altro

Download PDF

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

The following two tabs change content below.