In Spalte B habe ich Werte (Baujahr als Beispiel). Alle Werte sind ausgelesen worden.
Um die Werte in Spalte B nun weiter verwenden zu können, dürfen diese nur in jeder sechsten Zeile auftauchen: B1 - B7 - B13 etc.
Das Problem was ich nicht gelöst bekomme ist, das die Werte in den nachfolgenden Spalten ebenfalls mit verschoben werden müssen.
Als Anmerkung vor jedem neuen Wert in Spalte B kommt eine leere Spalte. Die Laufende Nummer 2, ist quasi der Block, wie später alle Blöcke aussehen sollten.
Excelliste umfasst die Zeilen bis 1.600, und geht bis Spalte "CG". Falls das eine Rolle spielt.
Habe ich leider weder mit diversen Hilfsspalten noch mit einem makro hinbekommen bisher.
hi also ich verstehe noch nicht, was du haben willst. so richtig passt deine Beschreibung auch nicht zur Beispieldatei, das macht es schwer. vielleicht ist es hilfreich, wenn du die Beispieldatei mal von Hand überarbeitest, so dass du uns auch zeigen kannst, wie die Liste nach der Bearbeitung aussehen soll, also dein Wunschergebnis.
Hi ohne Makro vielleicht so, ich schreib es mal für deine Beispieldatei, du musst dann die Spalten anpassen
1. Hilfspalte G; Formel in G2, dann nach unten kopieren soweit wie Daten vorhanden sind : =Wenn(A2="";G1;G1+1) 2. Hilfspalte F; Formel in F2, dann nach unten kopieren soweit wie Daten vorhanden sind: =Wenn(A2="";H1+1;0) 3. in die erste freie Zelle der Spalte G (im Beispiel G21) kommt dann diese Formel: =AUFRUNDEN(SEQUENZ(G20*6)/6;0) 4. in die erste freie Zelle der Spalte F (im Beispiel F21) kommt dann diese Formel: =REST(SEQUENZ(G20*6)-1;6) 5. kopiere jetzt beide Hilfsspalten und füge an gleicher Stelle als Wert ein 6. führe mit beiden Hilfsspalten die Funktion DATEN - DATENTOOLS - DUPLIKATE ENTFERNEN aus 7. markiere jetzt die ganze Tabelle und sortiere sie mit Hilfsspalte 1 als erstes Kriterium und Hilfsspalte 2 als zweites Kriterium
Gruß Daniel
Folgende(r) 1 Nutzer sagt Danke an slowboarder für diesen Beitrag:1 Nutzer sagt Danke an slowboarder für diesen Beitrag 28 • Jockel
@Gast123 Ich teste das Marko heute Abend zuhause. Es wird leider von der Firewall gesperrt.. Melde mich dann nochmal.
@ Daniel Das sah ganz gut aus. Aber leider ist die Sortierung bei mir am Ende doch durcheinander. Hattest du das selbst getestet, oder war das aus dem Effeff getippt?
@ Daniel Das sah ganz gut aus. Aber leider ist die Sortierung bei mir am Ende doch durcheinander. Hattest du das selbst getestet, oder war das aus dem Effeff getippt?
Gruß hotrod.
ist ausprobiert und getestet mit deiner Beispieldatei. funktioniert dort auch, wenn ich es so mache wie von mir beschrieben, hab's grad nochmal getestet.
Hi wenn es per Makro gehen soll, wäre das eine Möglichkeit:
Code:
Sub ZeilenEinfügen() Dim Zelle1 As Range Dim Zelle2 As Range Dim x As Long
Set Zelle1 = Range("A2")
Do Set Zelle2 = IIf(Zelle1.Offset(1, 0).Value = "", Zelle1.End(xlDown), Zelle1.Offset(1, 0)) If Zelle2.Row = Rows.Count Then Exit Do x = 6 - (Zelle2.Row - Zelle1.Row) If x > 0 Then Zelle2.Resize(x).EntireRow.Insert Set Zelle1 = Zelle2 Loop
End Sub
oder das hier, das baut die von mir gezeigte Formellösung nach.
Code:
Sub ZeilenEinfügen2() With ActiveSheet.UsedRange With .Columns(.Columns.Count + 1).Offset(1, 0).Resize(, 2) .Columns(1).FormulaR1C1 = "=if(RC1="""",R[-1]C,R[-1]C+1)" .Columns(2).FormulaR1C1 = "=if(RC1="""",R[-1]C+1,0)" .Cells(.Rows.Count, 1).Formula2R1C1 = "=RoundUp(Sequence(R[-1]C*6)/6,0)" .Cells(.Rows.Count, 2).Formula2R1C1 = "=Mod(Sequence(R[-1]C[-1]*6)-1,6)" With .Resize(.Rows.Count + 6 * .Cells(.Rows.Count - 1, 1), 2) .Select .Formula = .Value .RemoveDuplicates Columns:=Array(1, 2), Header:=xlNo End With End With End With
With ActiveSheet.UsedRange .Sort key1:=.Cells(1, .Columns.Count - 1), order1:=xlAscending, key2:=.Cells(1, .Columns.Count), order2:=xlAscending, Header:=xlYes .Columns(.Columns.Count - 1).Resize(, 2).ClearContents End With
End Sub
Beide Codes passen sich automatisch an die verwendete Tabellengröße an (Zeilen und Spalten), dh da braucht nichts angepasst werden, wenn sich die Tabelle ändert
die zweite Variante sollte bei langen Listen etwas schneller sein.
Gruß Daniel
Folgende(r) 1 Nutzer sagt Danke an slowboarder für diesen Beitrag:1 Nutzer sagt Danke an slowboarder für diesen Beitrag 28 • hotrod