Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1568to1572
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

Spalten mit VBA sortieren ohne Hilfsspalte

Spalten mit VBA sortieren ohne Hilfsspalte
25.07.2017 13:42:56
Martin
Hallo,
gibt es in Excel per VBA eine Möglichkeit zwei Spalten nach der Summe Ihrer Werte zu sortieren? So geht es nicht, weil als Sortierschlüssel (Key) nur eine Spalte angegeben werden darf:
Sub Beispiel()
With ActiveSheet.Sort
With .SortFields
.Clear
.Add Key:=Range("A2:B28"), SortOn:=xlSortOnValues, Order:=xlAscending, _
DataOption:=xlSortNormal
End With
.SetRange Range("A1:B28")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
Auch folgende Versuche waren nicht erfolgreich:

Key:=Range("A2:A28") + Key:=Range("B2:B28")
Key:=Range("A2") + Range("B2")
Wie im Betreff geschrieben, suche ich nach einer Lösung ohne dafür extra eine Hilfsspalte anlegen zu müssen, in der die Werte beider Spalten summeriert werden müssen.
Viele Grüße
Martin

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Spalten mit VBA sortieren ohne Hilfsspalte
25.07.2017 13:59:17
Tino
Hallo,
du kannst ein zweites Sortfeld erstellen.
With .SortFields
.Clear
.Add Key:=Range("A2:A28"), SortOn:=xlSortOnValues, _
Order:=xlAscending, DataOption:=xlSortNormal
.Add Key:=Range("B2:B28"), SortOn:=xlSortOnValues, _
Order:=xlAscending, DataOption:=xlSortNormal
End With
Allerdings nach der Summe beider wird das so ohne Hilfsspalte nicht gehen.
Aber wo ist das Problem, diese Hilfsspalte kann ja wieder gelöscht werden.
Gruß Tino
AW: Spalten mit VBA sortieren ohne Hilfsspalte
25.07.2017 14:09:45
Martin
Hallo Tino,
ich danke dir für deine Antwort. Dass man nach mehreren Sortierfelden sortieren kann, ist mir selbstverständlich bekannt. Mir geht es in diesem Fall aber wirklich um die Summe zweier Sortierfelder. Normal würde auch ich eine Hilfsspalte verwenden, aber die betreffende Exceldatei ist so enorm groß und hat so viele rechenintensive Formeln, dass ich aus Perfomance-Gründen möglichst auf das Anlegen und anschließende Löschen einer Hilfsspalte verzichten möchte.
Viele Grüße
Martin
Anzeige
AW: Spalten mit VBA sortieren ohne Hilfsspalte
25.07.2017 14:19:06
Tino
Hallo,
du kannst die Berechnung für diese Aktion auf manuel stellen.
Sonst evtl. mit VBA sortieren.
Google mal nach QuickSort.
Gruß Tino
AW: Spalten mit VBA sortieren ohne Hilfsspalte
25.07.2017 14:27:42
Martin
Hallo Tino,
nochmals vielen Dank für deinen neuen Vorschlag. Auch den QuickSort-Algorithmus kenne und nutze ich bei vielen anderen meiner Excel-Dateien. Leider ist auch dieser in diesem Fall keine Lösung, weil in der Exceldatei zahlreiche Formeln, Zellkommentare und unterschiedliche Formatierungen vorhanden sind. QuickSort eignet sich für die Sortierung reiner Datenfelder/Arrays wirklich hervorragend, aber nicht bei der Sortierung von Zellen mit "Zusätzen".
Viele Grüße
Martin
Anzeige
AW: Spalten mit VBA sortieren ohne Hilfsspalte
25.07.2017 15:02:59
Tino
Hallo,
ok. wenn noch andere sachen enthalten sind geht dies natürlich auch nicht!
Dann könnte man noch über eine andere Temp Arbeitsmappe gehen,
aber ob dies wirklich schneller ist wage ich zu bezweifeln.
Gruß Tino
AW: Spalten mit VBA sortieren ohne Hilfsspalte
25.07.2017 15:29:53
Martin
Hallo Tino,
ja, ich ziehe dasselbe Fazit wie du. Die Hilfsspalte scheint wohl unausweichlich zu sein...
Nochmals danke, dass auch du dir Gedanken gemacht hast!
Viele Grüße
Martin
AW: Spalten mit VBA sortieren ohne Hilfsspalte
25.07.2017 14:20:56
mmat
Hallo Martin,
es gibt für Dein Problem nicht wirklich eine elegante Lösung. Du könntest den Sortieralgorithmus als VBA-Code implementieren und darin verankern, dass er immer wieder die Summen der Schlüsselfelder "on the fly" berechnet. Das dürfte auf grossen Tabellen so performant sein, wie 'ne Schlaftablette (vor allem das austauschen von Zeilen ...).
Die Hilfsspalte ist das Mittel der Wahl in so einem Fall. Die automatische Berechnung von Formeln und die Bildschirmaktualisierung kann man ja ausschalten.
vg, MM
Anzeige
AW: Spalten mit VBA sortieren ohne Hilfsspalte
25.07.2017 14:35:17
Martin
Hallo mmat,
auch dir vielen Dank für deine Antwort. Dass ich um die Hilfsspalte nicht herumkomme hatte ich schon fast befürchtet und Tino hat das im Prinzip auch geschrieben. Ich wurde von den Möglichkeiten in Excel bereits so oft positiv überrascht, dass ich hier im Forum zumindest mal nach einer eventuellen Alternative zur Hilfsspalte fragen wollte. Ich lass die Frage mal offen, vielleicht gibt es ja doch noch eine Variante.
Viele Grüße
Martin
AW: Spalten mit VBA sortieren ohne Hilfsspalte
25.07.2017 15:01:05
mmat
Hallo Martin,
also gut, du hast es so gewollt. Die folgende Sortierfunktion sortiert eine Tabelle auf der Basis eines Wertes der mittels einer mathematischen Funktion aus zwei Spalten gebildet wird. In meinem Fall Modulo, aber Summe, Differenz oder Integral :) geht genau so gut.
Zeile 1 sind Überschrften, meine Wertespalten sind 1 und 4. Funktioniert prima auf 'ner Tabelle mit 50 Zeilen ...

Sub InsertSort()
Dim n As Long, m As Long, s As String, p As Long, lr As Long
Dim zw As Long
Worksheets("Bewertung").Select
lr = Cells(1000, 1).End(xlUp).Row
For n = 3 To lr
m = n: zw = Cells(n, 1) Mod Cells(n, 4)
Do While zw 

Anzeige
AW: Spalten mit VBA sortieren ohne Hilfsspalte
25.07.2017 15:25:36
Martin
Hallo mmet,
wow, das musste ich mir jetzt erst einmal genauer ansehen und nachvollziehen ;-)
Im Prinzip werden die Zeiten ausgeschnitten und verschoben. Das finde ich ja einen wirklich interessanten Ansatz, auf den ich nicht gekommen wäre. Aber leider werden die ganzen Bezüge der anderen Formeln durcheinander gebracht. Zudem habe ich auch noch weitere Sortierschlüssel. Der Fehler lag jetzt aber wahrscheinlich bei mir, weil ich meine Problem mit nur zwei Spalten zu vereinfacht dargestellt habe. Aber auch wenn es funktioniert hätte, würde die temporäre Hilfsspalte wahrscheinlich etwas weniger Rechenleistung vom PC abverlangen.
Aber ich danke dir wirklich vielmals für deine aufgebrachten Bemühungen. Du hast dich wirklich "hineingekniet" ;-)
Viele Grüße
Martin
Anzeige
AW: Spalten mit VBA sortieren ohne Hilfsspalte
25.07.2017 15:55:40
mmat
Hi Martin,
reingekniet? ... nicht wirklich ...
Bezüge sollten nicht durcheinanderkommen, ich verwende ja Excel-Methoden um die Zeile zu verschieben. Es sei denn du hast da "Indirekt" drin ...
Weitere Spalten als zusätzliche Kriterien dazunehmen ist eigentlich auch kein Problem (zumindest theoretisch)
vg, MM

305 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige