In questo articolo, creeremo una macro per copiare i dati da tutti i fogli della cartella di lavoro in un nuovo foglio.

I dati grezzi per questo esempio sono costituiti dai dettagli dei dipendenti di diversi reparti in fogli diversi. Vogliamo consolidare i dettagli dei dipendenti in un unico foglio.

ArrowRawData

Abbiamo creato la macro “CopyRangeFromMultipleSheets” per il consolidamento dei dati. Questa macro può essere eseguita facendo clic sul pulsante “Consolida dati”.

ArrowMain

Macro creerà un nuovo foglio di lavoro e inserirà i dati consolidati da tutti i fogli di lavoro.

ArrowOutput

Spiegazione del codice

Eseguire il “ciclo” attraverso tutti i fogli per verificare se esiste il foglio “Master”.

Per ogni fonte in ThisWorkbook.Worksheets If Source.Name = “Master” Then MsgBox “Master sheet già esistente”

Il codice Exit Sub End If Next Above viene utilizzato per verificare se il foglio “Master” esiste nella cartella di lavoro. Se il foglio “Master” è presente nella cartella di lavoro, il codice viene chiuso e viene visualizzato un messaggio di errore.

Source.Range (“A1”). SpecialCells (xlLastCell) .Row Il codice sopra viene utilizzato per ottenere il numero di riga dell’ultima cella del foglio.

Source.Range (“A1”, Range (“A1”). SpecialCells (xlLastCell)). Copia Destination.Range (“A” & DestLastRow)

Il codice sopra viene utilizzato per copiare l’intervallo specificato nella cella definita.

Segui sotto per il codice

Sub CopyRangeFromMultipleSheets()

'Declaring variables

Dim Source As Worksheet

Dim Destination As Worksheet

Dim SourceLastRow, DestLastRow As Long

Application.ScreenUpdating = False

'Looping through all sheets to check whether "Master" sheet exist

For Each Source In ThisWorkbook.Worksheets

If Source.Name = "Master" Then

MsgBox "Master sheet already exist"

Exit Sub

End If

Next

'Inserting a new sheet after the "Main" sheet

Set Destination = Worksheets.Add(after:=Sheets("Main"))

Destination.Name = "Master"

'Looping through all the sheets in the workbook

For Each Source In ThisWorkbook.Worksheets



'Preventing consolidation of data from "Main" and "Master" sheet

If Source.Name <> "Main" And Source.Name <> "Master" Then



SourceLastRow = Source.Range("A1").SpecialCells(xlLastCell).Row



Source.Activate



If Source.UsedRange.Count > 1 Then



DestLastRow = Sheets("Master").Range("A1").SpecialCells(xlLastCell).Row



If DestLastRow = 1 Then

'copying data from the source sheet to destination sheet

Source.Range("A1", Range("A1").SpecialCells(xlLastCell)).Copy Destination.Range("A" & DestLastRow)

Else

Source.Range("A2", Range("A1").SpecialCells(xlCellTypeLastCell)).Copy Destination.Range("A" & (DestLastRow + 1))

End If



End If

End If

Next

Destination.Activate

Application.ScreenUpdating = True

End Sub

Se ti è piaciuto questo blog, condividilo con i tuoi amici su Facebook e Facebook.

Ci piacerebbe sentire la tua opinione, facci sapere come possiamo migliorare il nostro lavoro e renderlo migliore per te. Scrivici a [email protected]