Copia un intervallo da ciascun foglio in un foglio utilizzando VBA in Microsoft Excel

Anonim

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.

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

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

Spiegazione del codice

'Loop' attraverso tutti i fogli per verificare se esiste il foglio "Master".

Per ogni fonte in ThisWorkbook.Worksheets

Se Source.Name = "Master" Then

MsgBox "Il foglio mastro esiste già"

Esci Sotto

Finisci se

Prossimo

Il codice sopra viene utilizzato per verificare se il foglio "Master" esiste nella cartella di lavoro. Se il foglio "Master" esiste nella cartella di lavoro, il codice esce 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 nel foglio.

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

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

Si prega di seguire sotto per il codice

 Sub CopyRangeFromMultipleSheets() 'Dichiarazione delle variabili Dim Source As Worksheet Dim Destination As Worksheet Dim SourceLastRow, DestLastRow As Long Application.ScreenUpdating = False 'Esegue il ciclo di tutti i fogli per verificare se esiste un foglio "Master" per ogni origine in ThisWorkbook.Worksheets If Source.Name = "Master" Then MsgBox "Il foglio principale esiste già" Esci Sub End If Next 'Inserimento di un nuovo foglio dopo il foglio "Principale" Imposta destinazione = Fogli di lavoro.Add(after:=Sheets("Main")) Destination.Name = " Master" 'Percorrere tutti i fogli della cartella di lavoro per ogni origine in ThisWorkbook.Worksheets 'Prevenire il consolidamento dei dati dal foglio "Main" e "Master" 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 Quindi 'copia i dati dal foglio di origine al foglio di destinazione Source.Range("A 1", 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. Inoltre, puoi seguirci su Twitter e Facebook.

Ci piacerebbe avere tue notizie, facci sapere come possiamo migliorare il nostro lavoro e renderlo migliore per te. Scrivici al sito di posta elettronica