Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1556to1560
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

VBA Sortierfunktion

VBA Sortierfunktion
11.05.2017 16:58:32
Rincewind
Hallo zusammen,
ich suche nach einem VBA - Code, mit dem ich einen Bereich (Spalte A bis N) des Tabellenblatts "Stammdaten" nach drei verschiedenen Kriterien sortieren kann (Jeweils ohne die Überschriften in der ersten Zeile).
Als erstes soll nach Spalte A sortiert werden und zwar mit einer benutzerdefinierten Liste, sagen wir der Einfachheit halber "A", "B", "C".
Als zweites müsste dann nach Spalte B sortiert werden einfach alphabetisch und dann auch noch nach Spalte C alphabetisch.
Ich bin leider mit Sortierfunktionen überhaupt nicht vertraut. Ich hab es mit dem Macrorekorder versucht, aber dabei kam ausschließlich unbrauchbares heraus. Sollte jemand eine Lösung parat haben, wäre ich sehr dankbar.
Viele Grüße
Volker

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Sortierfunktion
11.05.2017 17:19:31
Max2
Hallo,
hier mit ArrayList.Sort
Man könnte auch händisch nen Quicksort schreiben, aber lohnt sich hier nicht.
Hier noch die Datei: https://www.herber.de/bbs/user/113515.xlsm

Option Explicit
Sub sort()
Dim sortMe
Set sortMe = CreateObject("System.Collections.ArrayList")
Dim ws As Worksheet
Dim i As Long
Dim j As Long
Dim x As Long
Set ws = ThisWorkbook.Sheets(1)
With ws
j = 1
Do
i = .Cells(.Rows.Count, j).End(xlUp).Row
x = 1
Do
sortMe.Add .Cells(x, j).Value
x = x + 1
Loop Until x > i
sortMe.sort
x = 1
Do
.Cells(x, j).Value = sortMe(x - 1)
x = x + 1
Loop Until x > i
sortMe.Clear
j = j + 1
Loop Until j > 3
End With
End Sub

Anzeige
AW: Makrorekorder ist da aber nicht unhilfreich...
11.05.2017 17:25:48
Michael
Volker,
...geputzt erhältst Du schon brauchbare Ergebnisse:
Sub a()
Dim Wb As Workbook: Set Wb = ThisWorkbook
Dim Ws As Worksheet: Set Ws = Wb.Worksheets("Stammdaten")
Dim r As Range: Set r = Ws.Range("A:N")
With Ws
.Sort.SortFields.Clear
.Sort.SortFields.Add Key:=.Range("A:A"), SortOn:=xlSortOnValues, _
Order:=xlAscending, CustomOrder:="A,B,C,D", DataOption:=xlSortNormal
.Sort.SortFields.Add Key:=Range("B:B"), SortOn:=xlSortOnValues, _
Order:=xlAscending, DataOption:=xlSortNormal
.Sort.SortFields.Add Key:=Range("C:C"), SortOn:=xlSortOnValues, _
Order:=xlAscending, DataOption:=xlSortNormal
With .Sort
.SetRange r
.Header = xlYes
.Apply
End With
End With
End Sub
Aber ist halt mühsamer, es selbst zu versuchen ;-).
LG
Michael
Anzeige
AW: VBA Sortierfunktion
15.05.2017 13:12:11
Rincewind
Danke für die Hilfe. Hat funktioniert. Ich hätte das gerne selber bereinigt, aber meine Kenntnisse in VBA sind nur rudimentär und ich habe es nicht geschafft, aus dem aufgezeichneten Makro eine allgemeine Version zu basteln und in meinen bereits vorhanden Code einzubauen. Das hat mit Faulheit nichts zu tun.
Ok, dann nichts für ungut! Viel Erfolg noch, owT
15.05.2017 14:12:10
Michael

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige