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