Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1732to1736
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Sortierfunktion ohne Excel-interne Funktion gesucht

Sortierfunktion ohne Excel-interne Funktion gesucht
07.01.2020 10:08:13
Frank
Guten Morgen zusammen,
heute suche ich mal einen Anstoss zum Sortieren von Spalten. Mein Problem dabei ist, jede Zelle in Blatt A hat einen Pedant in Blatt B. Wenn ich also z.B. in Tabelle A die Spalte "B" (ab Reihe 2) sortiere, muss eine identische, neue Reihenfolge in Tabelle B, Spalte "B" erzeugt werden. Auch treten leere Zellen auf. Diese sollen logischerweise an das Ende geschoben werden.
Hat jemand zufällig einen Beispielcode für mich, evtl. mit QuickSort?
Vielen Dank im Voraus

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Ich glaube, dass Du da auf falschem Weg bist ...
07.01.2020 10:24:15
lupo1
Ansonsten ist die Excel-interne Sortierfunktion =SORTIEREN() noch ganz neu und verdient Beachtung.
Ich würde an Deiner Stelle vor dem vergleichenden Sortieren eine Zusatzspalte bauen, die die Nebenbedingungen abbildet. Dann sind die zu erwartenden Fehler im Rahmen des Möglichen minimal.
AW: Ich glaube, dass Du da auf falschem Weg bist ...
07.01.2020 10:37:59
mmat
Hallo,
mit Quicksort wird das viel zu kompliziert, insbesondere das Schieben leerer Zellen ans Ende. Wenns wirklich nur darum geht, 2 Spalte gleichartig zu sortieren, dann geht das so (weitestgehend aufgezeichnetes Makro):
Sub SortiereSpalte(tabelle As String)
Dim ws As Worksheet, lr As Long
Set ws = ActiveWorkbook.Worksheets(tabelle)
lr = ws.Cells(Rows.Count).End(xlUp).Row
ws.Sort.SortFields.Clear
ws.Sort.SortFields.Add Key:=Range("B2:B" & CStr(lr)), SortOn:=xlSortOnValues, Order:= _
xlAscending, DataOption:=xlSortNormal
With ws.Sort
.SetRange Range("B2:B" & CStr(lr))
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
Sub Makro2()
SortiereSpalte ("Tabelle A")
SortiereSpalte ("Tabelle B")
End Sub
vg, MM
Anzeige
AW: Ich glaube, dass Du da auf falschem Weg bist ...
07.01.2020 10:54:06
Frank
Hallo mmat,
leider scheinst du auf dem falschen Weg zu sein. Natürlich funktioniert dein Makro, ABER...
in der 2. Tabelle sind komplett andere Werte als in Tabelle 1. Ich kann also nicht beide unabhängig voneinander sortieren lassen.
In Blatt A ist bei mit verschiedene Hardware gelistet und in Blatt B in der jeweils korespondierenden Zelle die zugehörende Artikelnummer. Diese Zuordnung muss natürlich erhalten bleiben. Blatt B wird also nur umgeschrieben, je nach Sortierung in Blatt A.
AW: Ich glaube, dass Du da auf falschem Weg bist ...
07.01.2020 11:00:34
Daniel
Hi
warum verzichtest du nicht einfach auf Blatt B und fügst die Daten aus Blatt B in Blatt A mit ein?
dann kannst du beides gemeinsam sortieren.
Anders wird es auch nicht funktionieren.
Gruß Daniel
Anzeige
AW: Ich glaube, dass Du da auf falschem Weg bist ...
07.01.2020 12:26:01
Frank
Hallo Daniel,
da die beenötigte Funktion Teil eines großen Tools mit GUI ist, lässt sich das leider nicht bewerkstelligen.
Ich habe jetzt aber mal die Möglichkeit über eine Hilfsspalte zu arbeiten in Betracht gezogen und bastle gerade damit rum.
AW: Ich glaube, dass Du da auf falschem Weg bist ...
07.01.2020 16:23:28
Frank
Hallo Leute,
vielen Dank für die Hilfe. Ich habe mich jetzt für die Hilfstabelle entschieden und damit läuft es jetzt reibungslos.
Sorry falscher Betreff ...
07.01.2020 17:06:37
mmat
Sorry, ich hatte vorhin leider nicht den Betreff des Vorredners geändert.
Das eine referenzielle Integrität gewahrt werden muss, hatte ich aus deiner Anforderung nicht herausgelesen. Du hast das Problem mit einer Hilfsspalte gelöst. Das ist m. E. der einzig gangbare Weg in diesem Fall.
vg, MM
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige