Datensätze einer Tabelle in eine Zeile kopieren

Hallo,

ich habe schon im Netz gesucht, aber leider keine Lösung für mein Problem gefunden. Ich hoffe, Ihr könnt mir helfen.

Ich habe eine Tabelle, wo in Spalte F Kundennummern stehen, die teilweise doppelt oder mehrfach untereinander vorkommen. Nun muss ich die Daten aus den Spalten N:X, die hinter den mehrfach vorkommenden Kundennummern stehen, hinter die zuerst auftretende Kundennummer kopieren und dann die doppelten Kundennummernzeilen löschen. Ich hoffe, dass man dies mit einem Makro erledigen kann, da diese Aufgabe öfter auf mich zu kommt. Ich habe leider keinen Plan, wie ich das machen soll. Ich hätte zwar noch eine Lösung zum suchen und kopieren, aber leider weiß ich nicht, wie ich die zu kopierenden Daten in die erste freie Zeile in der Spalte von der ersten Kundennummer bekommen. Ich arbeite mit Excel 2000.

Vielen Dank Euch schon einmal im voraus.

Ich habe eine Tabelle, wo in Spalte F Kundennummern stehen,
die teilweise doppelt oder mehrfach untereinander vorkommen.
Nun muss ich die Daten aus den Spalten N:X, die hinter den
mehrfach vorkommenden Kundennummern stehen, hinter die zuerst
auftretende Kundennummer kopieren und dann die doppelten
Kundennummernzeilen löschen.

Hallo DH,

soll die Spaltenstruktur von N:X erhalten bleiben?

N:X sind ja 11 Spalten, sollen die immer komplett übernommen werden, auch wenn einige zellen darin leer sind?

Gruß
Reinhard

Hallo Reinhard,

erst einmal vielen Dank für die schnelle Antwort. Ja die Datenstruktur soll erhalten bleiben, da in den 11 Zeilen Ansprechpartner mit ihren Details stehen und diese Daten dann alle in einer Zeile zu einer Kundnennummer stehen sollen. Jetzt gibt es soviele gleiche Kundennummern untereinander wie Ansprechpartner vorhanden sind.

LG

Martina

erst einmal vielen Dank für die schnelle Antwort. Ja die
Datenstruktur soll erhalten bleiben, da in den 11 Zeilen
Ansprechpartner mit ihren Details stehen und diese Daten dann
alle in einer Zeile zu einer Kundnennummer stehen sollen.
Jetzt gibt es soviele gleiche Kundennummern untereinander wie
Ansprechpartner vorhanden sind.

Hallo Martina,

reine Excel-Formellösung (falls möglich bzw. Anwenderfreundlich) oder ein Makro?

Soll eine bestehende Tabelle einmalig umgewandelt werden oder kommen da permanent neue Daten dazu?

Gruß
Reinhard

Hallo Reinhard,

Wenn es geht, würde ich das Problem gerne mit einem Makro erschlagen. Die Ausgangsliste, welche aus SAP gezogen wird, ist immer gleich, von der Breite her, nur die Länge kann variieren.

LG Martina

Wenn es geht, würde ich das Problem gerne mit einem Makro
erschlagen. Die Ausgangsliste, welche aus SAP gezogen wird,
ist immer gleich, von der Breite her, nur die Länge kann
variieren.

Hallo Martina,

in ein Standardmodul, an Dateikopie austesten:

Sub DoppelteRaus()
Dim Zei As Long, Spa As Long
Spa = 14
Application.ScreenUpdating = False
With Worksheets("Tabelle1")
 For Zei = .Cells(Rows.Count, 6).End(xlUp).Row To 2 Step -1
 If .Cells(Zei, 6) = .Cells(Zei - 1, 6) Then
 Spa = Spa + 11
 .Range(.Cells(Zei, 14), .Cells(Zei, Spa - 1)).Copy Destination:=.Cells(Zei - 1, 25)
 .Rows(Zei).Delete
 Else
 Spa = 14
 End If
 Next Zei
End With
Application.ScreenUpdating = True
End Sub

Gruß
Reinhard

Hallo Reinhard,

zuerst einmal vielen vielen Dank. Es funktioniert. Könntest Du mir bitte vielleicht noch hinter die Zeilen schreiben, was welche Zeile bewirkt, damit ich das Makro auch verstehe und vielleicht auch noch einmal für andere Listen anwenden oder umschreiben kann. Das wäre wirklich fantastisch.

Ach und noch eine Frage, wenn es geht, kann man das Ganze auch wieder rückwärts machen, also nach Bearbeitung der neuen Liste zurück ins alte untereinandersthende Format?

Nochmals vielen vielen Dank

Martina

Hallo Martina,

Könntest Du
mir bitte vielleicht noch hinter die Zeilen schreiben, was
welche Zeile bewirkt, damit ich das Makro auch verstehe und
vielleicht auch noch einmal für andere Listen anwenden oder
umschreiben kann. Das wäre wirklich fantastisch.

siehe nachstehenden Code. gehe mit dem Curser in Befehle rein wie z.B. Cells, dann drücke F1

Ach und noch eine Frage, wenn es geht, kann man das Ganze auch
wieder rückwärts machen, also nach Bearbeitung der neuen Liste
zurück ins alte untereinandersthende Format?

Jain. Was ein Makro macht kriegt das Bearbeiten–Rückkängig in Excel nicht mit.
Mit viel Makroaufwand kann man das aber durch ein Makro erreichen daß Bearbeiten Rückgängig wieder geht.
Daß setzt aber voraus daß das Makro sich jeden Schritt den es macht irgendwie merkt. Löscht es eine zeile muß es sich irgendwie merken/abspeichern was in der Zeile alles so drin stand.
Ggfs. samt Formatierungen usw.

Viel einfacher ist es du fügst

.Copy After:=worksheets(worksheets.count)

als ersten Befehl in der With-Schleife ein.

Gruß
Reinhard

Sub DoppelteRaus()
Dim Zei As Long, Spa As Long
Spa = 14 'Startwert für Spa(lte), 14=14te Spalte=N
'Bildschirmaktualisierung ausschalten wegen Schnelligkeit
Application.ScreenUpdating = False
'Alles was in der With-Schleife steht und vorne einen Punkt hat bezieht sich auf Tabelle1
' Dadurch ist es wurscht ob grad Tabelle3 das aktive Blatt ist
With Worksheets("Tabelle1")
 'Die 6 steht für 6te Spalte=F, Zei läuft von der Zeilennummer der untersten belegten Zelle in F
 ' rauf bis zu Zeile 2
 For Zei = .Cells(Rows.Count, 6).End(xlUp).Row To 2 Step -1
 'Wenn Der Wert in F der aktuellen Zeile der gleiche ist wie der eine Zeile obendrüber dann... '
 If .Cells(Zei, 6) = .Cells(Zei - 1, 6) Then
 Spa = Spa + 11 'Spa hat erst 25, dann 36, dann 47 usw.
 'Kopiere alles was in der aktuellen Zeile ab Spalte N nach rechts steht in die
 ' Zeile obendrüber ab Spalte 25 (Y)
 .Range(.Cells(Zei, 14), .Cells(Zei, Spa - 1)).Copy Destination:=.Cells(Zei - 1, 25)
 'Löschen der aktuellen Zeile
 .Rows(Zei).Delete
 Else
 Spa = 14 'Rücksetzung von Spa wenn keine doppelten Ku-Nr
 End If
 Next Zei
End With
Application.ScreenUpdating = True
End Sub

Hallo Reinhard,

vielen Dank für die ausführliche Beschreibung.

Es tut mir leid, aber ich habe meine eine Frage wahrscheinlich falsch formuliert. Ich meinte nicht rückwärts über den Rückwärtsbutton, sondern, wenn man die Liste bearbeitet hat, dass man dann ein Makro darüber laufen lassen kann, und die Liste sieht dann wieder so aus, wie vorher. Ich habe diese Anforderung auch nicht so recht verstanden, aber mein Chef, meint das bräuchte er, falls es möglich wäre.

LG Martina

Es tut mir leid, aber ich habe meine eine Frage wahrscheinlich
falsch formuliert. Ich meinte nicht rückwärts über den
Rückwärtsbutton, sondern, wenn man die Liste bearbeitet hat,
dass man dann ein Makro darüber laufen lassen kann, und die
Liste sieht dann wieder so aus, wie vorher. Ich habe diese
Anforderung auch nicht so recht verstanden, aber mein Chef,
meint das bräuchte er, falls es möglich wäre.

Hallo Martina,

das Problem ist das Gleiche. Wenn ein Makro eineTabelle verändert hat, kann man das nur wieder herstellen wenn das makro sich merkt wie die Tabelle aussah bevor es loslegte.

Was spricht dagegen wie gesagt das Blatt beim makrostart zu kopieren?

Gruß
Reinhard

Hallo Reinhard,

vielen Dank für Deine Hilfe. Ich füge den kopieren Befehl ein und dann muss sich mein Chef zufrieden geben. Ansonsten funktioniert das Makro einwandfrei. Ich habe es dank Deiner Beschreibung auch verstanden und kann es mal wieder in abgewandelter Form anwenden.

Noch mal vielen Dank für Deine Mühe.

LG Martina