Copia l'intervallo utilizzato di ciascun foglio in un foglio utilizzando VBA in Microsoft Excel

Anonim

Nel caso in cui desideri copiare l'intervallo utilizzato di ciascun foglio di lavoro nel foglio principale, dovresti leggere questo articolo. Utilizzeremo il codice VBA per copiare i dati da ciascun foglio di lavoro e quindi incollare un altro foglio senza sovrascrivere.

La macro aggiungerà un foglio con il nome Master alla cartella di lavoro e copierà le celle da ogni foglio della cartella di lavoro in questo foglio di lavoro.

La prima macro esegue una copia normale e la seconda macro copia i valori. I sub della macro utilizzano le funzioni seguenti; le macro non funzioneranno senza le funzioni.

Di seguito sono riportate le istantanee dei dati di Sheet1 e Sheet2:

Dobbiamo seguire i passaggi seguenti per avviare l'editor VB:

  • Fare clic sulla scheda Sviluppatore
  • Dal gruppo Codice, seleziona Visual Basic

  • Copia il codice sottostante nel modulo standard
Sub CopyUsedRange() Dim sh As Worksheet Dim DestSh As Worksheet Dim Last As Long If SheetExists("Master") = True Then MsgBox "Il foglio Master esiste già" Exit Sub End If Application.ScreenUpdating = False Set DestSh = Worksheets.Add DestSh .Name = "Master" per ogni sh in ThisWorkbook.Worksheets If sh.Name DestSh.Name Then If sh.UsedRange.Count > 1 Then Last = LastRow(DestSh) sh.UsedRange.Copy DestSh.Cells(Last + 1, 1 ) End If End If Next Application.ScreenUpdating = True End Sub Sub CopyUsedRangeValues() Dim sh As Worksheet Dim DestSh As Worksheet Dim Last As Long If SheetExists ("Master") = True Then MsgBox "Il foglio principale esiste già" Exit Sub End If Application.ScreenUpdating = False Set DestSh = Worksheets.Add DestSh.Name = "Master" per ogni sh in ThisWorkbook.Worksheets If sh.Name DestSh.Name Then If sh.UsedRange.Count > 1 Then Last = LastRow(DestSh) With sh.UsedRange DestSh.Cells(Last + 1, 1).Resize(.Rows.Count, _ .Columns.Count).Value = .Value End With End If End If Next Ap plication.ScreenUpdating = True End Sub Function LastRow(sh As Worksheet) On Error Resume Next LastRow = sh.Cells.Find(What:="*", _ After:=sh.Range("A1"), _ Lookat:= xlPart, _ LookIn:=xlFormulas, _ SearchOrder:=xlByRows, _ SearchDirection:=xlPrevious, _ MatchCase:=False).Row On Error GoTo 0 End Function Function Lastcol(sh As Worksheet) On Error Resume Next Lastcol = sh.Cells .Find(What:="*", _ After:=sh.Range("A1"), _ Lookat:=xlPart, _ LookIn:=xlFormulas, _ SearchOrder:=xlByColumns, _ SearchDirection:=xlPrevious, _ MatchCase: =False).Column On Error GoTo 0 End Function Function SheetExists(SName As String, _ Optional ByVal WB As Workbook) As Boolean On Error Riprendi successivo se WB non è nulla Quindi imposta WB = ThisWorkbook SheetExists = CBool(Len(Sheets(SName) .Nome)) Fine Funzione 

Ora il codice della macro è impostato; eseguiremo la macro "CopyUsedRange" e inserirà un nuovo foglio "Master" e copieremo i dati da ciascun foglio.

Conclusione:La copia dei dati da più fogli è un'attività manuale; però; con il codice sopra, possiamo consolidare i dati con un solo clic su una macro.

Se ti è piaciuto il nostro blog, condividilo con i tuoi amici su Facebook. E puoi anche seguirci su Twitter e Facebook.

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