Zeilen zu einem Datensatz zusammenfassen in Excel
Schritt-für-Schritt-Anleitung
Um mehrere Zeilen in einer Zeile zusammenzufassen, kannst Du den folgenden VBA-Code verwenden. Dieser wird in die Arbeitsmappe eingefügt und ermöglicht es Dir, Daten aus mehreren Zeilen zu aggregieren.
- Öffne Excel und drücke
ALT + F11, um den VBA-Editor zu öffnen.
- Füge den folgenden Code in das Modul
DieseArbeitsmappe ein:
Option Explicit
Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
' Code by Renee Sulaweyo
' June 2006
Dim dRowIx As Double
Dim dTargetRow As Double
Dim dTargetCol As Double
Dim vTargetCell As Variant
Dim sNr() As String
Dim sDesc() As String
Dim iCnt() As Integer
Dim ixArr As Integer
Dim sErrMsg As String
Dim bDoIt As Boolean
If Target.Rows.Count = 1 Or _
Target.Columns.Count <> 6 Or _
Left(Target.Cells(1, 1).Address, 3) = "$A$" Then Exit Sub
vTargetCell = InputBox("Bitte geben Sie die Adresse der Zielzelle an:", _
"Sendung zusammenfassen", "A" & Target.Row + Target.Rows.Count)
On Error Resume Next
vTargetCell = UCase(vTargetCell)
bDoIt = True
If Not (Sh.Range(vTargetCell).Address(False, False) = vTargetCell) Then bDoIt = False
If Not bDoIt Then
MsgBox "Aktion abgebrochen", vbOKOnly + vbExclamation, "Sendung zusammenfassen"
Exit Sub
End If
On Error GoTo 0
dTargetRow = Sh.Range(vTargetCell).Row
dTargetCol = Sh.Range(vTargetCell).Column
Application.ScreenUpdating = False
Sh.Cells(dTargetRow, dTargetCol) = Target.Cells(1, 1)
Sh.Cells(dTargetRow, dTargetCol + 1) = Target.Cells(1, 2)
ReDim sNr(0)
ReDim sDesc(0)
ReDim iCnt(0)
sNr(0) = Target.Cells(1, 3)
sDesc(0) = Target.Cells(1, 4)
iCnt(0) = 1
Sh.Cells(dTargetRow, dTargetCol + 5) = Target.Cells(1, 6)
sErrMsg = ""
For dRowIx = 1 To Target.Rows.Count
If Target.Cells(dRowIx, 1) <> Sh.Cells(dTargetRow, dTargetCol) Then sErrMsg = "AUFTRAG"
If Target.Cells(dRowIx, 2) <> Sh.Cells(dTargetRow, dTargetCol + 1) Then sErrMsg = "EMPFÄNGER"
If Target.Cells(dRowIx, 6) <> Sh.Cells(dTargetRow, dTargetCol + 5) Then sErrMsg = "LIEFERDATUM"
If sErrMsg <> "" Then
MsgBox "Kein EINDEUTIGKEIT im " & sErrMsg & "!" & vbCrLf & _
"Aktion abgebrochen!", vbOKOnly + vbExclamation, "Sendung zusammenfassen"
Sh.Range(Sh.Cells(dTargetRow, dTargetCol), _
Sh.Cells(dTargetRow, dTargetCol + 5)).ClearContents
Exit Sub
End If
bDoIt = True
For ixArr = 0 To UBound(sNr)
If sNr(ixArr) = Target.Cells(dRowIx, 3) Then
If dRowIx > 1 Then iCnt(ixArr) = iCnt(ixArr) + 1
bDoIt = False
End If
Next ixArr
If bDoIt Then
ReDim Preserve iCnt(ixArr)
ReDim Preserve sNr(ixArr)
ReDim Preserve sDesc(ixArr)
iCnt(ixArr) = 1
sNr(ixArr) = Target.Cells(dRowIx, 3)
sDesc(ixArr) = Target.Cells(dRowIx, 4)
End If
Sh.Cells(dTargetRow, dTargetCol + 4) = Sh.Cells(dTargetRow, dTargetCol + 4) & _
IIf(dRowIx = 1, "", ", ") & Target.Cells(dRowIx, 5)
Next dRowIx
For ixArr = 0 To UBound(sNr)
Sh.Cells(dTargetRow, dTargetCol + 2) = Sh.Cells(dTargetRow, dTargetCol + 2) & _
IIf(ixArr = 0, "", ", ") & _
iCnt(ixArr) & "x" & sNr(ixArr)
Sh.Cells(dTargetRow, dTargetCol + 3) = Sh.Cells(dTargetRow, dTargetCol + 3) & _
IIf(ixArr = 0, "", ",") & _
iCnt(ixArr) & "x" & sDesc(ixArr)
Next ixArr
Application.ScreenUpdating = True
End Sub
- Speichere die Datei als Makro-fähige Datei (
*.xlsm).
- Klicke mit der rechten Maustaste auf die Zellen der Zeilen, die Du zusammenfassen möchtest, und gib die Zieladresse ein.
Häufige Fehler und Lösungen
Alternative Methoden
Wenn Du kein VBA verwenden möchtest, kannst Du auch eine Pivot-Tabelle nutzen, um Daten aus mehreren Zeilen zusammenzufassen. So funktioniert's:
- Markiere deine Daten.
- Gehe zu
Einfügen > PivotTable.
- Wähle die gewünschten Felder, um die Daten darzustellen und zusammenzufassen.
Diese Methode ist besonders nützlich, wenn Du die Daten dynamisch analysieren möchtest.
Praktische Beispiele
Angenommen, Du hast folgende Daten:
| Auftrag |
Empfänger |
Artikel-Nr |
Beschreibung |
Menge |
Lieferdatum |
| 001 |
Kunde A |
12345 |
Motor |
3 |
01.01.2023 |
| 001 |
Kunde A |
67890 |
Schraube |
1 |
01.01.2023 |
Nach der Anwendung des VBA-Codes könnte die zusammengefasste Zeile so aussehen:
| Auftrag |
Empfänger |
Artikel-Nr |
Beschreibung |
Menge |
Lieferdatum |
| 001 |
Kunde A |
3x12345, 1x67890 |
Motor, Schraube |
4 |
01.01.2023 |
Tipps für Profis
- Nutze Datenüberprüfung in Excel, um sicherzustellen, dass die Eingaben in den Zielzellen den Anforderungen entsprechen.
- Experimentiere mit Excel-Formeln wie
VERKETTEN oder TEXTVERKETTEN, um mehrere Werte in einer Zelle zusammenzufassen, falls Du keine VBA-Lösung verwenden möchtest.
- Halte Deine Daten sauber und organisiert, um die Effizienz beim Zusammenfassen von Zeilen zu erhöhen.
FAQ: Häufige Fragen
1. Wie kann ich mehrere Zeilen in einer Zelle zusammenfassen?
Um mehrere Zeilen in einer Zelle zusammenzufassen, kannst Du die Funktion TEXTVERKETTEN oder VERKETTEN verwenden, um die Daten zu kombinieren.
2. Funktioniert dieser VBA-Code in allen Excel-Versionen?
Der VBA-Code sollte in den meisten modernen Excel-Versionen funktionieren, insbesondere ab Excel 2010. Stelle sicher, dass Makros aktiviert sind.