in ein Blatt Wenn Sie mehrere Blätter gleichzeitig bearbeiten und Daten von jedem Blatt in ein Master-Arbeitsblatt kopieren möchten, sollten Sie diesen Artikel lesen. Wir werden die Eigenschaft currentregion des VBA-Codes verwenden, um Daten aus allen Arbeitsblättern in einem einzigen Blatt zu konsolidieren. Diese Eigenschaft ist nützlich für viele Vorgänge, bei denen die Auswahl automatisch auf den gesamten aktuellen Bereich erweitert wird, z. B. die AutoFormat-Methode. Diese Eigenschaft kann nicht in einem geschützten Arbeitsblatt verwendet werden.

Die Bedingung ist: Jedes Blatt sollte ein ähnliches Format enthalten, d. H. Die gleiche Anzahl von Spalten; Mit demselben Format können wir Daten genau zusammenführen.

Bitte beachten Sie: In diesem Artikel wird die Verwendung von VBA-Code demonstriert. Wenn sich die Anzahl der Spalten in einem der Blätter aus irgendeinem Grund unterscheidet, ergeben die gesamten zusammengeführten Daten kein genaues Bild. Es wird dringend empfohlen, die gleiche Anzahl von Spalten zu verwenden. Der VBA-Code fügt der Arbeitsmappe ein neues Blatt hinzu und kopiert die Daten nach jedem Blatt, ohne sie zu überschreiben.

Nehmen wir ein Beispiel für 3 Blätter, nämlich Jan, Feb & Mar. Es folgt die Momentaufnahme dieser Blätter:

img1

img2

img3

Um Daten aus allen Blättern zu einem Blatt zu kombinieren, müssen Sie 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

img4

aus * Kopieren Sie den folgenden Code in das Standardmodul

Sub CopyCurrentRegion()

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.Range("A1").CurrentRegion.Copy DestSh.Cells(Last + 1, 1)

End If

End If

Next

Application.ScreenUpdating = True

End Sub

Sub CopyCurrentRegionValues()

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.Range("A1").CurrentRegion

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

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]