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

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

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

Di seguito è riportato l’istantanea dei dati da Foglio1 e Foglio2:

img1

img2

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

Fare clic sulla scheda Sviluppatore Dal gruppo Codice, selezionare Visual Basic

img3

  • Copia il codice seguente nel modulo standard

Sub CopyUsedRange()

Dim sh As Worksheet

Dim DestSh As Worksheet

Dim Last As Long

If SheetExists("Master") = True Then

MsgBox "The sheet Master already exist"

Exit Sub

End If

Application.ScreenUpdating = False

Set DestSh = Worksheets.Add

DestSh.Name = "Master"

For Each 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 "The sheet Master already exist"

Exit Sub

End If

Application.ScreenUpdating = False

Set DestSh = Worksheets.Add

DestSh.Name = "Master"

For Each 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

Application.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 Resume Next

If WB Is Nothing Then Set WB = ThisWorkbook

SheetExists = CBool(Len(Sheets(SName).Name))

End Function

img4

img5

img6

Ora, il codice macro è impostato; eseguiremo la macro “CopyUsedRange” e inseriremo un nuovo foglio “Master” e copieremo i dati da ogni foglio.

img7

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 i nostri blog ti sono piaciuti, condividilo con i tuoi amici su Facebook. E anche tu puoi seguirci su Twitter e Facebook.

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