Supportnet / Forum / Tabellenkalkulation
Zeilen zusammenführen
Frage
Hallo Leute,
ich habe eine ellenlange Liste in Excel mit den Spalten A – BU. Dabei stehen in der Spalte A Kundennummern, die allerdings mehrmals auftauchen (siehe Beispiel). In den folgenden Spalten B – BU können unterschiedliche Eintragungen gemacht werden.
Nun möchte ich erreichen, dass ich pro Kundennummer eine Zeile bekomme, inklusive aller Daten, die in den Spalten B – BU eingetragen wurden.
Beispiel:
A-------B------C----…----BU
1----ABC-------------------
1----------------DEF
1--------------------------------XYZ
2
2----------------123
2----------------------------------4
Soll werden zu:
A-------B------C----…----BU
1-----ABC-DEF---------XYZ
2--------------123-------------4
Wie kriege ich das am Besten hin?
Tausend Dank für eure Hilfe!!
VLG Gerrit
Antwort 1 von Saarbauer
Hallo,
aus meiner Sicht nur mit VBA.
Dazu noch eine Frage, kann es vorkommen, dass in einer Spalte zu einer Kundennummer zweimal Daten auftauchen
Gruß
Helmut
aus meiner Sicht nur mit VBA.
Dazu noch eine Frage, kann es vorkommen, dass in einer Spalte zu einer Kundennummer zweimal Daten auftauchen
Gruß
Helmut
Antwort 2 von Gerritos
Hallo Helmut,
ja das kann vorkommen. Allerdings sind die Daten dann gleich.
Gruß, Gerrit
ja das kann vorkommen. Allerdings sind die Daten dann gleich.
Gruß, Gerrit
Antwort 3 von Saarbauer
Hallo,
versuch es mal mit dem Makro
Sub umsortieren()
letzteZeile = Range("A65536").End(xlUp).Row
For i = 2 To letzteZeile
For j = i + 1 To letzteZeile
If Range("A" & i).Value = Range("A" & j).Value Then
letzteSpalte = Range("IV" & j).End(xlToLeft).Column
For k = 2 To letzteSpalte
If Cells(j, k).Value <> "" Then
Cells(i, k).Value = Cells(j, k).Value
Range("A" & j & ": IV" & j).Select
Selection.Delete Shift:=xlUp
If k = letzteSpalte Then
j = j - 1
letzteZeile = letzteZeile - 1
End If
End If
Next k
End If
Next j
Next i
End Sub
Gruß
Helmut
versuch es mal mit dem Makro
Sub umsortieren()
letzteZeile = Range("A65536").End(xlUp).Row
For i = 2 To letzteZeile
For j = i + 1 To letzteZeile
If Range("A" & i).Value = Range("A" & j).Value Then
letzteSpalte = Range("IV" & j).End(xlToLeft).Column
For k = 2 To letzteSpalte
If Cells(j, k).Value <> "" Then
Cells(i, k).Value = Cells(j, k).Value
Range("A" & j & ": IV" & j).Select
Selection.Delete Shift:=xlUp
If k = letzteSpalte Then
j = j - 1
letzteZeile = letzteZeile - 1
End If
End If
Next k
End If
Next j
Next i
End Sub
Gruß
Helmut
Antwort 4 von Gerritos
Hi Helmut!
Das Prinzip klappt perfekt. Leider ist die Datei rund 6.000 Zeilen lang und irgendwann bricht der Marko ab und Excel friert ein :( Gibt's da noch ne Möglichkeit?
Danke im Voraus und schönes Wochenende!!
Gerrit
Das Prinzip klappt perfekt. Leider ist die Datei rund 6.000 Zeilen lang und irgendwann bricht der Marko ab und Excel friert ein :( Gibt's da noch ne Möglichkeit?
Danke im Voraus und schönes Wochenende!!
Gerrit
Antwort 5 von Saarbauer
Hallo,
im Moment, da ohne deine Tabelle nur schwer nachvollziebar ,keine richtige.
Hilfslösung
letzteZeile = Range("A65536").End(xlUp).Row
ersetzen durch
letzteZeile = 1000
und nach jedem Durchgang entsprechend erhöhen, z.B. auf 2000 usw.
Gruß
Helmut
im Moment, da ohne deine Tabelle nur schwer nachvollziebar ,keine richtige.
Hilfslösung
letzteZeile = Range("A65536").End(xlUp).Row
ersetzen durch
letzteZeile = 1000
und nach jedem Durchgang entsprechend erhöhen, z.B. auf 2000 usw.
Gruß
Helmut

