ich suche einen Weg die eine Liste zu Sortieren anhand von "Block-Segmenten" Ich möchte Anhand des ersten Wertes unter Loading den "Block" nach Größe sortieren. Gibt es dazu einen Weg in Excel?? Skizze im Anhang
Moin! Mir reicht die Skizze, um zu beurteilen, dass der "Tabellenaufbau" … suboptimal ist. Ich würde die Skizze ausdrucken, die Blöcke schneiden, auf dem Schreibtisch verschieben und wieder zusammenkleben.
Ja, ich weiß, war böse.
Leerzeilen zwischen den Blöcken und Überschriften/Zusammenfassungen pro Block haben in einer Excel-Tabelle rein gar nichts verloren!
Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Folgende(r) 1 Nutzer sagt Danke an RPP63 für diesen Beitrag:1 Nutzer sagt Danke an RPP63 für diesen Beitrag 28 • shift-del
ja ich weiß, die Kommentare sind ja gerechtfertigt (wenn auch manchmal Böse). Zu meiner Verteidigung: Ist auch nicht meine Liste, ich habe nur die undankbare Aufgabe diese zu füllen und zu Sortieren. Keine Sorge, Datei ist im Anhang.
Wenn es möglich ist, bin ich für jede Hilfe dankbar. Wenn es nicht möglich ist, habe ich wenigstens eine Grundlage zu Argumentieren.
22.10.2024, 12:29 (Dieser Beitrag wurde zuletzt bearbeitet: 22.10.2024, 12:32 von Egon12.)
Hallo Dave,
in ein allgemeines Modul:
Code:
Option Explicit Private arrLoading()
Sub StartSortBlockweise() Dim i&, j&, k& With Tabelle1 For i = 2 To .Cells(Rows.Count, 6).End(xlUp).Row Step 9 k = k + 1 ReDim Preserve arrLoading(1 To 2, 1 To k) arrLoading(1, k) = .Cells(i + 2, 17) arrLoading(2, k) = "A" & i & ":S" & i + 8 Next i arrLoading = Application.Transpose(arrLoading) BubbleSort 1, 0, arrLoading Ausgabe End With End Sub
Private Sub Ausgabe() Dim i&, j&: j = 2 With Tabelle2 For i = 1 To UBound(arrLoading) Tabelle1.Range(arrLoading(i, 2)).Copy Tabelle2.Cells(j, 1).PasteSpecial xlPasteAll j = j + 8 Next i End With End Sub
Private Function BubbleSort(Spalte As Long, SortAsc As Integer, arr As Variant) Dim iTemp, i&, j&, k& With Tabelle1 For i = 1 To UBound(arr) For j = i + 1 To UBound(arr) If SortAsc = 1 Then If arr(i, Spalte) > arr(j, Spalte) Then For k = 1 To UBound(arr, 2) iTemp = arr(i, k) arr(i, k) = arr(j, k) arr(j, k) = iTemp Next k End If Else If arr(i, Spalte) < arr(j, Spalte) Then For k = 1 To UBound(arr, 2) iTemp = arr(i, k) arr(i, k) = arr(j, k) arr(j, k) = iTemp Next k End If End If Next j Next i BubbleSort = arr End With End Function
lege vorher für die Ausgabe ein neues Tabelleblatt an.
Gruß Uwe
Folgende(r) 1 Nutzer sagt Danke an Egon12 für diesen Beitrag:1 Nutzer sagt Danke an Egon12 für diesen Beitrag 28 • GKDave
Diese Formel greift auf den Zellbereich A2:S55 des Arbeitsblattes "Tabelle1" zu und sortiert diesen Bereich nach dem jeweils ersten Loading-Wert jedes 9-Zeilen Zellblockes (Resultatbereich ebenfalls A2:S55). Da die Formel keine Zellformatierungen mitkopiert, habe ich diese 1x vom Arbeitsblatt "Tabelle1" ins Blatt "Tabelle2" kopiert.
Modifizierte Datei liegt bei.
Mit lieben Grüßen Anton.
Windows 10 64bit Office365 32bit
Folgende(r) 1 Nutzer sagt Danke an EA1950 für diesen Beitrag:1 Nutzer sagt Danke an EA1950 für diesen Beitrag 28 • GKDave