
Ich habe eine Excel-Arbeitsmappe mit mehreren Arbeitsblättern. Sie haben alle die gleichen Spaltennamen. Die Anzahl der Zeilen unterscheidet sich jedoch von Blatt zu Blatt. Ich möchte ein Übersichtsblatt erstellen, in dem ich alle Daten aus jedem einzelnen Blatt sehen kann. Ich könnte in jedes Blatt gehen und einfach die Daten von der zweiten bis zur letzten Zeile kopieren und einfügen, wobei die Daten in jedem Blatt vorhanden sind. Aber ich denke, es gibt einen einfacheren Weg, dies zu tun?
Vielen Dank für Ihre Hilfe!
Antwort1
Dies ist eine Lösung mit VBA:
Public Sub overview()
resultsheet = "Overview"
Dim wkb As Workbook
Dim wks, wks1 As Worksheet
Set wkb = ThisWorkbook
On Error GoTo SheetError:
Set wks1 = wkb.Sheets(resultsheet)
destrow = 1
totalcolumn = 1
totalwks = wkb.Sheets.Count
For i = 1 To totalwks
Set wks = wkb.Sheets(i) 'Iterate over all sheets
wksname = wks.Name
If wksname <> resultsheet Then 'Exclude the overview sheet
rowdata = True
columndata = True
thisrow = 2
thiscolumn = 1
totalempty = 0
While rowdata = True
If i = 1 Then 'First sheet section
a = wks.Cells(thisrow - 1, thiscolumn)
If a <> "" Then
wks1.Cells(destrow, thiscolumn) = a
thiscolumn = thiscolumn + 1
Else
If thisrow = 2 Then
totalcolumn = thiscolumn
End If
totalempty = totalempty + 1
If totalempty = totalcolumn Then
rowdata = False
End If
If thiscolumn = totalcolumn Then
thisrow = thisrow + 1
thiscolumn = 1
destrow = destrow + 1
totalempty = 0
End If
End If
Else ' Any other Sheet section
a = wks.Cells(thisrow, thiscolumn)
If a <> "" Then
rowdata = True
wks1.Cells(destrow, thiscolumn) = a
thiscolumn = thiscolumn + 1
Else
totalempty = totalempty + 1
If totalempty = totalcolumn Then
rowdata = False
End If
If thiscolumn = totalcolumn Then
thisrow = thisrow + 1
thiscolumn = 1
destrow = destrow + 1
totalempty = 0
End If
End If
End If
Wend
End If
Next i
Exit Sub
SheetError:
If Err.Number = 9 Then
createwks = MsgBox("Worksheet " & resultsheet & " doesn't exist" & vbCrLf & "Do you want to create it?", vbYesNo, Error)
End If
If createwks = 6 Then
Set wks1 = wkb.Worksheets.Add(After:=Worksheets(Worksheets.Count))
wks1.Name = resultsheet
Resume
End If
End Sub
Öffnen Sie dazu Macros/VBA aufDiesesArbeitsbuchFügen Sie ein Modul ein und fügen Sie diesen Code auf der rechten Seite ein. Führen Sie es dann aus und überprüfen Sie den Inhalt auf dem Blatt mit dem NamenÜberblickwenn es endet.
Antwort2
Ich würde es manuell machen :)
Sie können einen Blick darauf werfendiese Lösung (Daten nach Position konsolidieren), werden Sie sehen, dass der Mehraufwand ähnlich ist:
Richten Sie in jedem Arbeitsblatt, das die zu konsolidierenden Daten enthält, die Daten wie folgt ein:
Stellen Sie sicher, dass jeder Datenbereich im Listenformat vorliegt: Jede Spalte hat eine Beschriftung in der ersten Zeile und enthält ähnliche Fakten. Die Liste enthält keine leeren Zeilen oder Spalten.
Platzieren Sie jeden Bereich auf einem separaten Arbeitsblatt, aber platzieren Sie keine Bereiche auf dem Arbeitsblatt, auf dem Sie die Konsolidierung durchführen möchten.
Stellen Sie sicher, dass jeder Bereich das gleiche Layout hat.
Klicken Sie im Hauptarbeitsblatt auf die obere linke Zelle des Bereichs, in dem die konsolidierten Daten angezeigt werden sollen.
Hinweis: Um zu vermeiden, dass vorhandene Daten im Zielarbeitsblatt durch die zu konsolidierenden Daten überschrieben werden, achten Sie darauf, dass Sie rechts und unterhalb dieser Zelle genügend Zellen für die konsolidierten Daten frei lassen.
... und auf Wiedersehen ...
Antwort3
Ich sehe keinen Vorteil darin, dies zu tun. Ich kann nicht sagen, was Sie tun müssen, aber wenn Sie die Daten auf die verschiedenen Blätter verteilen, müssen Sie dafür einen Grund haben. Wenn Sie einen Grund haben, warum sollten Sie sie dann zusammenfügen? Das ergibt für mich keinen Sinn. Also gut, was ich tun würde, ist: Warum muss ich sie überhaupt alle zusammen sehen? Es macht es nur schwierig, etwas zu finden. Moment, ja, nur wenn Sie die Bearbeitungsfunktion verwenden möchten, um bestimmte Daten darauf zu finden. Aber müssen Sie das oft tun? Ich würde, wenn es etwas Verwandtes gibt, z. B. eine SUMME oder eine andere Zusammenfassung in jedem Blatt erstellen und im neuen Blatt einen Querverweis für dieses Feld in jedem separaten Tabellenblatt erstellen, um die Daten zu konsolidieren, ohne die gesamten Daten auf nur ein Blatt zu kopieren. Wenn Sie ein guter Programmierer sind, kann die erste Lösung zum Kopieren hilfreich sein, aber so einfach ist es nicht, Sie werden sehen. Und zu guter Letzt: Wenn die Zeilenanzahl jedes Blatts wächst, achten Sie darauf, dass die Summe oder ein anderer Wert ganz oben und ganz rechts steht, damit das Blatt wächst, die konsolidierten Daten jedoch nicht beeinträchtigt werden.