Anzeige
Archiv - Navigation
1240to1244
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Zeilen zusammenfassen

Zeilen zusammenfassen
Daniel
Hallo Zusammen,
gegeben ist eine Tabelle in den Spalten B-G.
Manche dieser Zeilen haben in Spalte E die gleiche Kennzeichnung und damit sind die Daten in den Zeilen der gleichen Gattung, die sich dann aber von den Inhalten der anderen Spalten unterscheiden.
Nun soll die Möglichkeit bestehen, dass man sich die Gattungen getrennt oder zusammengefasst anzeigen lässt. Die Eingabe und Pflege der Daten erfolgt im getrennten Zustand.
Die Wahl ob zusammengefasst werden soll oder nicht will ich über eine CheckBox steuern.
Die Zusammenfassung funktioniert dabei so:
Gibt es in der Tabelle zwei oder mehr Zeilen, die in Spalte E die gleiche Gattungsbezeichnung haben, so sollen die Spalten B, C und D (alle enthalten Strings) mit Komma getrennt in einer Zeile zusammengefasst werden. In Spalte F hingegen stehen Zahlen, hier muss die Summe gebildet werden.
Am besten ich veranschaulich das kurz in einem Beispiel:
im getrennten Zustand sieht die Tabelle so aus:
ABC|XET|HHH|X4554|-100|
DEF|XET|HHH|X7777|-200|
CDE|XIT|HHH|X7777|-300|
wird im aggregierten Zustand der Tabelle:
ABC|XET|HHH|X4554|-100|
DEF,CDE|XET,XIT|HHH|X7777|-500|
Ein bisschen was davon bekomme ich selbst hin, mir fehlt aber der grundsätzliche Weg, wie ich das machen soll. Vor allem muss ja auch der getrennte Zustand "gemerkt" werden, falls man es wieder getrennt haben will.
Kann mir da bitte jemand helfen und Anregungen geben? Ist das überhaupt verständlich was ich meine und brauche?
Danke,
Daniel

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Zeilen zusammenfassen
15.12.2011 12:44:00
Reinhard
Hallo Daniel,
Daten in B:F
Sub tt()
Dim Zei As Long, Spa As Long
For Zei = Cells(Rows.Count, 5).End(xlUp).Row To 2 Step -1
If Cells(Zei, 5).Value = Cells(Zei - 1, 5).Value Then
For Spa = 2 To 6
Select Case Spa
Case 2 To 4
Cells(Zei, Spa).Value = Cells(Zei, Spa).Value & "," & Cells(Zei - 1, Spa).Value
Case 6
Cells(Zei, Spa).Value = Cells(Zei, Spa).Value + Cells(Zei - 1, Spa).Value
End Select
Next Spa
Rows(Zei - 1).Delete
End If
Next Zei
End Sub

Gruß
Reinhard
Korrektur
15.12.2011 12:51:27
Reinhard
Hallo Daniel,
erstelle ein Blatt "Hilf".
Sub tt()
Dim Anz As Long, Zei As Long, Spa As Long
With Worksheets("Tabelle1")
Anz = .Cells(Rows.Count, 5).End(xlUp).Row
Worksheets("Hilf").Range("B:F").ClearContents
.Range("B1:F" & Anz).Copy Destination:=Worksheets("Hilf").Range("B1")
For Zei = Anz To 2 Step -1
If .Cells(Zei, 5).Value = .Cells(Zei - 1, 5).Value Then
For Spa = 2 To 6
Select Case Spa
Case 2 To 4
.Cells(Zei, Spa).Value = .Cells(Zei, Spa).Value & "," & .Cells(Zei - 1, Spa).Value
Case 6
.Cells(Zei, Spa).Value = .Cells(Zei, Spa).Value + .Cells(Zei - 1, Spa).Value
End Select
Next Spa
Rows(Zei - 1).Delete
End If
Next Zei
End With
End Sub

Gruß
Reinhard
Anzeige
AW: Korrektur - fast alles dabei
15.12.2011 13:34:08
Daniel
Hallo Reinhard,
das funktioniert schonmal sehr gut. Danke.
Zwei Nachfragen dazu:
1. Für die Wiederherstellung des nicht aggregierten Zustands brauche ich dann ja nur die Tabelle wieder von Hilf zurück kopieren lassen?
2. Der Code funktioniert nur, wenn die entsprechenden Gattungen in direkt aufeinanderfolgenden Zeilen stehen, oder? Das heißt wenn in meinem Beispiel aus Post#1 Zeile 1 zwischen 2 und 3 wären, dann würde der Code nicht funktionieren. Richtig?
Wie komplex ist es denn den Code so anzupassen, dass es funktioniert egal in welcher Zeile die gleichen Gattungen stehen und egal wie viele es sind?
Danke schonmal für die tolle Hilfe!
Anzeige
AW: Korrektur - fast alles dabei
15.12.2011 14:32:37
Daniel
Auf offen gesetzt und:
Wie muss ich Rows(Zei - 1).Delete ändern wenn ich nur B-F löschen will?
AW: Korrektur - fast alles dabei
15.12.2011 18:20:04
Hajo_Zi
Hallo Daniel,
Range("B" & Zei-1 &":F" & Zei-1).Delete shift:=xlup (noch oben verschieben)

AW: Korrektur - fast alles dabei
16.12.2011 09:37:17
Daniel
Danke, es funktioniert soweit.
Wie muss man den Code anpassen, wenn die gleichen Gattungen nicht direkt in der aufeinanderfolgenden Zeile stehen, sondern z.B. in 1 und 3? So wie hier:
CDE|XIT|HHH|X7777|-300|
ABC|XET|HHH|X4554|-100|
DEF|XET|HHH|X7777|-200|
das soll auch das hier werden:
ABC|XET|HHH|X4554|-100|
DEF,CDE|XET,XIT|HHH|X7777|-500|
Wie komplex ist das?
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige