Sortierung, jede sechste Zeile
#1
Moin,

anbei meine Beispiel Exceltabelle.

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.


Bin für jeden Lösungsvorschlag dankbar.

VG hotrod


Angehängte Dateien
.xlsx   Beispiel.xlsx (Größe: 10,14 KB / Downloads: 11)
Antworten Top
#2
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. 

Gruß Daniel
Antworten Top
#3
Moin slowboarder,

Danke für dein Feedback.

Ich hab nochmal eine neue Beispiel Exceldatei beigefügt.

So sollte das Ergebnis später aussehen, damit es weiter verarbeitet werden kann.

VG


Angehängte Dateien
.xlsx   Beispiel.xlsx (Größe: 12,64 KB / Downloads: 16)
Antworten Top
#4
Hallo

probiere es bitte mal mit dieser Datei, das Makro fügt die gewünschten Zeilen ein.
Muss danach noch etwas sortiert werden, oder soll das so bleiben??

mfg Gast 123


Angehängte Dateien
.xlsm   Beispiel.xlsm (Größe: 21,53 KB / Downloads: 14)
[-] Folgende(r) 1 Nutzer sagt Danke an Gast 123 für diesen Beitrag:
  • hotrod
Antworten Top
#5
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:
  • Jockel
Antworten Top
#6
Hi,
erstmal Danke für die Mühen.

@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?

Gruß hotrod.
Antworten Top
#7
(06.10.2025, 15:41)hotrod schrieb: Hi,

@ 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.


Gruß Daniel
Antworten Top
#8
@Gast123

Dein Makro sieht super aus, danke.
Ich werde das morgen früh mal versuchen auf die eigentliche Excelliste umzuschreiben, bzw zu entschlüsseln.

Eine Sortierung sollte eigentlich nicht mehr notwendig sein, aber Danke der Nachfrage. :)

@Daniel

Ich versuche nochmal rauszufinden warum bei mir die Sortierung nicht klappt.

Aber erstmal habt ihr mir super weitergeholfen, das ich einen Ansatz habe weiter zu kommen.

Vielen Dank, ich melde mich bei Problemen oder Erfolg. ^^

hotrod.
Antworten Top
#9
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:
  • hotrod
Antworten Top
#10
@Daniel
Ich habe die zweite Variante eben noch in einem kopierten Ausschnitt der Liste testen können.
Das sah wirklich gut aus. 

Leider ist meine Remote Verbindung danach verloren gegangen.
Daher kann ich den Code erst morgen früh in der großen Excelliste einspielen.

Denke aber das klappt.. ich werde berichten.

Nochmal vielen dank an euch beide. Hat mir ziemlich viel Ärger und Stillstand erspart!

Gruß hotrod.
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste