Microsoft Excel – unire i dati di più fogli in uno

excelIn questo articolo vedremo come sia possibile, attraverso del codice VBA, unire il contenuto di più fogli excel in un’unica lista.

Naturalmente poniamo come condizione di base che le liste sui vari fogli abbiano lo stesso numero di colonne.

Vediamo adesso il codice VBA che bisogna scrivere (in grassetto le mie note).

 

————————————————–

Sub unione()

‘Con Dim inizializziamo le variabili che ci servono   

Dim WsF As Worksheet, WsOut As Worksheet

Dim Col As Integer, Urf As Long, Ur1 As Long

‘Il comando ScreenUpdating = False serve per non fare vedere a video l’elaborazione della macro

Application.ScreenUpdating = False

‘TUTTI è il foglio di destinazione dell’unione

Set WsOut = Sheets(“TUTTI”)

WsOut.Cells.ClearContents

For F = 1 To 2  ‘ 2 perché voglio importare i primi due fogli excel del mio file

‘ Per il primo foglio la routine di copia è leggermente diversa in quanto è utile copiarsi le intestazioni delle colonne.

If F = 1 Then

Set WsF = Worksheets(Sheets(F).Name)

Col = WsF.Range(“A1”).CurrentRegion.Columns.Count

Urf = WsF.Range(“A” & Rows.Count).End(xlUp).Row

Ur1 = WsOut.Range(“A” & Rows.Count).End(xlUp).Row + 1

WsF.Range(WsF.Cells(1, 1), WsF.Cells(Urf, Col)).Copy _

Destination:=WsOut.Range(“A” & Ur1)

End If

 

If F > 1 Then

Set WsF = Worksheets(Sheets(F).Name)

Col = WsF.Range(“A1”).CurrentRegion.Columns.Count

Urf = WsF.Range(“A” & Rows.Count).End(xlUp).Row

Ur1 = WsOut.Range(“A” & Rows.Count).End(xlUp).Row + 1

WsF.Range(WsF.Cells(2, 1), WsF.Cells(Urf, Col)).Copy _

Destination:=WsOut.Range(“A” & Ur1)

End If

Next F

WsOut.Select

Application.ScreenUpdating = True

Set WsF = Nothing: Set WsOut = Nothing

Sheets(“TUTTI”).Select

Rows(“1:1”).Select

Selection.Delete Shift:=xlUp

ActiveWorkbook.RefreshAll

End Sub

————————————————–

 

 

This entry was posted in Excel, Microsoft Office and tagged , , . Bookmark the permalink.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *