in ein Blatt Wenn Sie den verwendeten Bereich jedes Arbeitsblatts in das Masterblatt kopieren möchten, sollten Sie diesen Artikel lesen. Wir werden VBA-Code verwenden, um die Daten von jedem Arbeitsblatt zu kopieren und dann in ein anderes Blatt einzufügen, ohne es zu überschreiben.

Das Makro fügt Ihrer Arbeitsmappe ein Blatt mit dem Namen Master hinzu und kopiert die Zellen von jedem Blatt in Ihrer Arbeitsmappe in diesem Arbeitsblatt.

Das erste Makro kopiert normal und das zweite Makro kopiert die Werte. Die Subs des Makros verwenden die folgenden Funktionen. Das Makro funktioniert ohne die Funktionen nicht.

Es folgt die Momentaufnahme der Daten aus Sheet1 und Sheet2:

img1

img2

Wir müssen die folgenden Schritte ausführen, um den VB-Editor zu starten:

Klicken Sie auf die Registerkarte Entwickler. Wählen Sie in der Gruppe Code die Option Visual Basic

img3

aus * Kopieren Sie den folgenden Code in das Standardmodul

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

Nun wird der Makrocode gesetzt; Wir werden das Makro „CopyUsedRange“ ausführen und es wird ein neues Blatt „Master“ einfügen und die Daten von jedem Blatt kopieren.

img7

Schlussfolgerung: * Das Kopieren von Daten aus mehreren Blättern ist eine manuelle Aufgabe. jedoch; Mit dem obigen Code können wir Daten mit einem einzigen Klick auf ein Makro konsolidieren.

Wenn Ihnen unsere Blogs gefallen haben, teilen Sie sie Ihren Freunden auf Facebook mit. Sie können uns auch auf Twitter und Facebook folgen.

Wir würden gerne von Ihnen hören, lassen Sie uns wissen, wie wir unsere Arbeit verbessern, ergänzen oder innovieren und für Sie verbessern können. Schreiben Sie uns an [email protected]