Categorie
Automazione Excel

Come integrare dati da fogli diversi con una macro

Il problema è quello di riportare i dati presenti sul secondo foglio e non presenti sul primo foglio in quanto entrambi i fogli contengono dati che hanno un codice identificativo comune.

Ciò significa che è necessario confrontare i dati dei due fogli per trovare le differenze tra loro e aggiornare i dati del foglio uno con quelli del foglio due. Ciò comporta l’esecuzione di passaggi molto complessi come, ad esempio, l’uso di formule di confronto come VLOOKUP.

Una macro invece può essere molto utile quando un’operazione di vlookup deve essere eseguita più volte con le stesse impostazioni. Le macro possono rendere la ricerca più efficiente poiché la stessa istruzione può essere eseguita senza doverla riscrivere. Inoltre, le macro possono essere personalizzate per eseguire diverse operazioni, come eseguire più ricerche in una serie di fogli, aggiornare i valori con formati diversi o elaborare le opzioni selezionate. Con una macro, è possibile ridurre la quantità di tempo trascorso nell’esecuzione delle ricerche, fornendo risultati più accurati e riducendo al minimo la possibilità di errore.

Supponiamo di avere due fogli in un file Excel: il primo con l’ elenco delle provincie italiane ed il secondo con l’elenco delle regioni per ogni provincia. I due fogli hanno in comune il codice della provincia costituito da un semplice progressivo:

Foglio Province

Foglio Regioni

Il codice provincia nel primo foglio (Province) si trova nella colonna B ed il set di dati è ordinato sul codice provincia, nel secondo foglio (Regioni) il codice provincia si trova nella colonna A ed il set di dati è ordinato sulla provincia.

La macro per prima cosa aggiungera’ nel foglio Province una colonna accodandola all’ ultima colonna utilizzata e  nominerà la colonna aggiunta con l’ etichetta ‘Regioni’.

Proseguirà poi ad aggiungere nel primo foglio le regioni prese dal secondo foglio utilizzando come chiave di ricerca il codice della provincia.

Chiamiamo la macro IntegrazioneRegioni()

Ecco il codice della macro

Sub IntegrazioneRegioni()Dim FoglioProvince, FoglioRegioni As Worksheet

Set FoglioProvince = Worksheets(“Province”)
Set FoglioRegioni = Worksheets(“Regioni”)

FoglioProvince.Range(“E1”).EntireColumn.Insert
FoglioProvince.Range(“E1”).Value = “Regioni”

Dim valoreDaCercare As String

Dim cercaValore As Range
Dim vecCoordinates() As String

‘Per ogni chiave trovata nella colonna CodPro del foglio Province
‘cerca la stessa chiave nel foglio Regioni
‘e ne prende il valore in corrispondenza della colonna Regioni

For i = 2 To FoglioProvince.UsedRange.Rows.Count
valoreDaCercare = FoglioProvince.Range(“B” & i).Value
‘ utilizzare il valore ottenuto qui
Set cercaValore = FoglioRegioni.Columns(“A:A”).Find(valoreDaCercare, LookIn:=xlValues)
If cercaValore Is Nothing Then
MsgBox “Valore non trovato”
Else
MsgBox “Valore trovato in cella ” & cercaValore.Address
vecCoordinates = Split(cercaValore.Address, “$”)

FoglioProvince.Range(“E” & i).Value = FoglioRegioni.Range(“E” & vecCoordinates(2))

End If

Next i

MsgBox “Inserita colonna con successo!”
End Sub

La macro utilizza la funzione Find che andrà a ricercare un determinato valore (il codice provincia) nella colonna A del foglio Regioni. 

Trovato il valore la macro ne estrae la Regione e la assegna nella colonna Regioni del foglio Province in corrispondenza del codice provincia.

Dopo avere eseguito la macro il foglio Province si presenterà in questo modo: