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