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

Spezielles Sortieren über VBA

Spezielles Sortieren über VBA
04.10.2022 07:12:23
Jem
Moin,
ich hatte schonmal eine Anfrage gestartet hier im Forum, kann jedoch auf den alten Thread nicht antworten (Cookie-Fehler).
Also zu meinem Problem:
Eine Tabelle mit 5 Spalten soll mit Werten aus der Spalte A sortiert werden, absteigend.
Jedoch sollen z.B. 3 -Stellige Zellen nach oben sortiert werden und 4 Stellige Zellen darunter.
Wichtig ist auch das es dynamisch funktionieren muss. Also die Anzahl der Reihen kann variieren.
Beispiel:
Spalte A | Spalte B | Spalte C | Spalte D | Spalte E
1-005 | 06:00 Uhr | 14:00 Uhr | Adresse1 | Adresse 2
001 | 12:00 Uhr | 20:00 Uhr | Adresse1 | Adresse 2
101 | 09:00 Uhr | 15:00 Uhr | Adresse1 | Adresse 2
103 | 09:00 Uhr | 15:00 Uhr | Adresse1 | Adresse 2
003 | 12:00 Uhr | 20:00 Uhr | Adresse1 | Adresse 2
1-006 | 06:00 Uhr | 14:00 Uhr | Adresse1 | Adresse 2
Ich habe einen Ansatz aus dem ersten Thread, dieser ist leider nicht dynamisch und sortiert nur die erste Spalte (A)

Option Explicit
Option Base 1
Sub sort()
Dim arr3(9), arrX(9), x&, a&, b&
x = 1: a = 1: b = 1
For x = 1 To 9
If Len(Cells(x, 1)) = 3 Then
arr3(a) = Cells(x, 1)
a = a + 1
End If
If Len(Cells(x, 1)) > 3 Then
arrX(b) = Cells(x, 1)
b = b + 1
End If
Next x
Range("A1").Resize(a - 1) = WorksheetFunction.Transpose(arr3)
Cells(a, 1).Resize(b - 1) = WorksheetFunction.Transpose(arrX)
End Sub
Vielen Dank für die Hilfe!

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

Betreff
Datum
Anwender
Anzeige
AW: Spezielles Sortieren über VBA
04.10.2022 08:09:43
Oberschlumpf
Hi
schneller als das "Aufmalen" deiner Bsp-Tabelle" im Text deiner Beschreibung wäre vllt der Upload einer Excel-Bsp-Datei mit Bsp-Daten gewesen ;-)
Und mit Datei kann man besser testen ;-)
Ciao
Thorsten
AW: Spezielles Sortieren über VBA
04.10.2022 09:58:32
Jem
Ich habe keine Datei hochgeladen, weil das Problem was ich habe ein kleiner Teil einer riesigen Datei ist, mit vielen persönlichen Daten etc.
Aber ich habe jetzt mal eben einfach eine neue Datei gemacht mit irgendwelchen Daten drin, wenn das hilft.
https://www.herber.de/bbs/user/155499.xlsm
Danke
AW: Spezielles Sortieren über VBA
04.10.2022 11:51:33
Jem
Jemand eine Idee?
Anzeige
AW: Spezielles Sortieren über VBA
04.10.2022 12:10:18
snb
Was bringt dir eine Sortierung ?
AW: Spezielles Sortieren über VBA
04.10.2022 13:54:49
Daniel
Hi
1. Hilfsspalte hinzufügen mit der Formel: =Länge(A1)
2. Beim Sortieren die diese Hilfsspalte als 1. Kriterium verwenden, oder wenn du in mehreren Schritten sortierst, danach als letztes sortieren
3. Hilfsspalte wieder löschen.
Reicht dir das als Anregung und kannst du das alleine in VBA umsetzen?
Gruß Daniel
AW: Spezielles Sortieren über VBA
04.10.2022 18:33:02
Werni
Hallo Jem
Mit einem Rechtsklick auf Zelle A1
Dieser Code gehört ins Modul des Arbeitsblattes

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
If ActiveCell  Range("A1") Then Exit Sub
Dim letztZ As Long, letztS As Integer, i As Long, j As Long, AnzZeich As Integer
Application.ScreenUpdating = False
letztZ = Range("A100000").End(xlUp).Row
letztS = Selection.SpecialCells(xlCellTypeLastCell).Column + 1
For i = 2 To letztZ
AnzZeich = Len(Cells(i, 1))
Cells(i, letztS) = AnzZeich
Next
DoEvents
ActiveWorkbook.Worksheets("Tabelle1").sort.SortFields.Clear
ActiveWorkbook.Worksheets("Tabelle1").sort.SortFields.Add2 Key:=Cells( _
2, letztS), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("Tabelle1").sort
.SetRange Range(Cells(1, 1), Cells(letztZ, letztS))
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
DoEvents
Application.CutCopyMode = False
ActiveWorkbook.Worksheets("Tabelle1").sort.SortFields.Clear
ActiveWorkbook.Worksheets("Tabelle1").sort.SortFields.Add2 Key:=Cells( _
2, letztS), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("Tabelle1").sort
.SetRange Range(Cells(1, 1), Cells(letztZ, letztS))
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Columns(letztS).Delete Shift:=xlToLeft
[A1].Select
Application.ScreenUpdating = True
ActiveWorkbook.Save
End Sub
Gruss werni
Anzeige
AW: Spezielles Sortieren über VBA
05.10.2022 09:19:27
Jem
Vielen Dank werni!!
Das hat mir sehr geholfen!
Funktioniert top!

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige