Anzeige
Archiv - Navigation
1800to1804
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

Sortiern per VBA

Sortiern per VBA
05.01.2021 13:17:53
Ronny

Ich wünsche ein schönen guten Tag,
ich bräuchte mal eure Hilfe und zwar an meiner hochgeladenen Beispiel-Datei.
https://www.herber.de/bbs/user/142771.xlsm
Ich möchte im Tabellenblatt „Anwesenheit 2021“ die Namen (mit dazugehöriger Zeile) Alphabetisch per Button sortiert wird.
Ich habe ein Makro schon zusammengebastelt (steht im Modul) macht alles soweit gut, nur die leeren Zellen (stehen Formeln drin) stellt das Makro an oberster stelle und meine Namen stehen unten Alphabetisch geordnet.
Wie bekomme ich die Namen hoch und die Leeren Zellen (mit Formeln) runter?
Liebe Grüße
Ronny

20
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Sortiern per VBA
05.01.2021 13:23:55
Hajo_Zi
Hallo Ronny,
Ändere die Sortierreihenfolge.

AW: Sortiern per VBA
05.01.2021 13:25:22
Oberschlumpf
Hi HaJo,
dann wird doch ein Name, beginnend mit Z vor einem Namen mit A angezeigt, oder?!
Ciao
Thorsten
AW: Sortiern per VBA
05.01.2021 13:56:13
Ronny
Ich bekomme es nicht hin...
hier der Code aus den anderen Beitrag
Private Sub Workbook_Open()
Dim i As Integer, laR As Integer
Application.ScreenUpdating = False
With Worksheets("kurz")
.Range("A7:K47").Sort Key1:=.Range("A7"), _
Order1:=xlDescending, Header:=xlGuess, OrderCustom:=1, _
MatchCase:=False, Orientation:=xlTopToBottom
laR = 47
For i = 47 To 1 Step -1
If .Cells(i, 1).Text  "" Then
laR = i
Exit For
End If
Next i
.Range("A7:K" & laR).Sort Key1:=.Range("A7"), _
Order1:=xlAscending, Header:=xlGuess, OrderCustom:=1, _
MatchCase:=False, Orientation:=xlTopToBottom
Application.ScreenUpdating = True
End With
End Sub

...den hab ich jetzt so angepaßt:
Sub Sortieren()
Dim i As Integer, laR As Integer
Application.ScreenUpdating = False
With Worksheets("Anwesenheit 2021")
.Range("A3:NN50").Sort Key1:=.Range("A3"), _
Order1:=xlDescending, Header:=xlGuess, OrderCustom:=1, _
MatchCase:=False, Orientation:=xlTopToBottom
laR = 47
For i = 47 To 1 Step -1
If .Cells(i, 1).Text  "" Then
laR = i
Exit For
End If
Next i
.Range("A3:NN" & laR).Sort Key1:=.Range("A3"), _
Order1:=xlAscending, Header:=xlGuess, OrderCustom:=1, _
MatchCase:=False, Orientation:=xlTopToBottom
Application.ScreenUpdating = True
End With
End Sub
und jetzt kommt ein Fehler
Grüß Ronny
Anzeige
AW: Sortiern per VBA
05.01.2021 14:06:21
onur
Guckst du hier:
Userbild
AW: Sortiern per VBA
05.01.2021 14:46:59
Daniel
Hi
Variante 1:
Lass deine Formeln nicht "" ausgeben, sondern FALSCH (als Wahrheitswert)
Diese kommen in der Sortierreihenfolge nach den Texten.
Variante 2:
Sortieren zuerst die gesamte Tabelle absteigend, damit die "Leeren" Zellen unten stehen.
Sortiere dann den Zellbereich mit Werten wieder aufsteigend.
Die Größe des Zellbereich mit Werten kannst du über Worksheetfunction.CountIf (ZählenWenn) und dem Suchwert "?*" ermitteln.
Gruß Daniel
Anzeige
AW: Sortiern per VBA
05.01.2021 17:26:30
Ronny
Soo, erstmal schönen Dank für die Infos.
Aber ich bekomme eure Infos mit mein Wissen nicht hin :-(
Mein Code ist der hier mit Leerstellen als erstes:
Sub Sortieren1()
' Range("A3:NN50").Select
ActiveWindow.ScrollRow = 82
ActiveWindow.ScrollRow = 80
ActiveWindow.ScrollRow = 75
ActiveWindow.ScrollRow = 71
ActiveWindow.ScrollRow = 66
ActiveWindow.ScrollRow = 61
ActiveWindow.ScrollRow = 54
ActiveWindow.ScrollRow = 45
ActiveWindow.ScrollRow = 39
ActiveWindow.ScrollRow = 32
ActiveWindow.ScrollRow = 22
ActiveWindow.ScrollRow = 14
ActiveWindow.ScrollRow = 5
ActiveWindow.ScrollRow = 1
ActiveWorkbook.Worksheets("Anwesenheit 2021").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Anwesenheit 2021").Sort.SortFields.Add Key:= _
Range("A3"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("Anwesenheit 2021").Sort
.SetRange Range("A3:NN50")
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Range("A3").Select
End Sub
Der Beitrag von Oberschlumpf mit sein Link ist folgender OriginalCode der die Leerstellen unten hat:
Private Sub Workbook_Open()
Dim i As Integer, laR As Integer
Application.ScreenUpdating = False
With Worksheets("kurz")
.Range("A7:K47").Sort Key1:=.Range("A7"), _
Order1:=xlDescending, Header:=xlGuess, OrderCustom:=1, _
MatchCase:=False, Orientation:=xlTopToBottom
laR = 47
For i = 47 To 1 Step -1
If .Cells(i, 1).Text  "" Then
laR = i
Exit For
End If
Next i
.Range("A7:K" & laR).Sort Key1:=.Range("A7"), _
Order1:=xlAscending, Header:=xlGuess, OrderCustom:=1, _
MatchCase:=False, Orientation:=xlTopToBottom
Application.ScreenUpdating = True
End With
End Sub
Jetzt müßte man dies irgendwie zusammenbringen + Daniel's Variante 1 😬😱
schöne Grüße
Ronny
Anzeige
AW: Sortiern per VBA
05.01.2021 17:46:09
Yal
Hallo Ronny,
warum sortierst Du nicht einfach die Kollegen in der Tabelle "Kollegen-Urlaubsangabe"?
Dann hättest Du schon in "Anweseheit 2021" die Einträge in der richtigen Reihenfolge.
Alternativ:
=WENN('Kollegen-Urlaubsangabe'!$A3="";ZEICHEN(160);'Kollegen-Urlaubsangabe'!$A3)
Zeichen 160 ist ein Leerzeichen, wird aber nach z (ascii 122) sortiert.
VG
Yal
AW: Sortiern per VBA
05.01.2021 17:58:22
Ronny
Hi Yal,
hatte ich schon bis ich mitbekommen habe, das wenn Einträge im Kalender vorgenommen werden und später ein neuer Name hinzugefügt wird und die dann noch sortiert werden, stimmen dann die Einträge im Kalender mit den Namen nicht mehr überein.
Soweit verständlich?
Gruß
Ronny
Anzeige
AW: Sortiern per VBA
05.01.2021 18:10:01
Ronny
und Yal
deine Alternative klang Gut ABER es ändert sich nichts nach dem Sortiern
Habs gerade getestet 😭
Gruß
Ronny
AW: Sortiern per VBA
05.01.2021 18:44:27
Yal
Dann entweder:
anstatt Zeichen (160), "ZZZ" als Dummy-Wert verwenden (Durch bedingte Formatierung kann man ZZZ mit weißer Schrift auf weißen Hintergrund bemalen).
oder:
so hintricksen, dass Du nicht sortieren muss.
oder: Du schaust Dir Power Query an: https://www.youtube.com/playlist?list=PLy5TtUB84yrN2VVRzp8Tif8bxQKJD_2bo
VG
Yal
AW: Sortiern per VBA
05.01.2021 18:51:21
onur
ICH HABE DIR EINE LÖSUNG GEPOSTET !
AW: Sortiern per VBA
05.01.2021 19:33:23
Ronny
entschuldige Onur,
habs gerade mit Klein- und Großbuchstaben getestet und es geht auch nicht. Sortiert immer noch so das die Leerzellen oben sind.
Gruß
Ronny
AW: Sortiern per VBA
05.01.2021 19:39:44
onur
Dann baust du Sch... . :)
Bei mir funktioniert es.
Poste mal die Datei.
AW: Sortiern per VBA
05.01.2021 20:08:07
Ronny
Onur das hoffe ich auch, dann gäbs eine Lösung...
hier die Datei
https://www.herber.de/bbs/user/142790.xlsm
an Steve: das bekomme ich selber nicht gebacken 😕
an Yal: das mit den "ZZZ" ist ja wirklich Trixerei 😄 aber das wäre meine Lösung wenn nix anderes Funktioniert.
Ich Danke euch erstmal für eure mühe, ich muß jetzt erstmal schluß machen und würde morgen weitermachen.
Ich wünsche euch eienen schönen Abend
Ronny
Anzeige
AW: Sortiern per VBA
05.01.2021 21:42:16
onur
Hast Recht, weil du nicht LEERE Zellen hast, sondern CHR(160) in den "leeren" Zellen stehen hast.
Geht aber mit einer bedingten Formatierung, einer Änderung deiner Formel und Sortieren nach Zellfarbe:
https://www.herber.de/bbs/user/142793.xlsm
AW: Sortiern per VBA, so gehts
05.01.2021 23:30:21
Daniel
Hi
so klappts bei mir mit deiner Beispieldatei:
1. als Formel in Spalte A:
='Kollegen-Urlaubsangabe'!$A2
oder auch:
=WENN('Kollegen-Urlaubsangabe'!$A2="";"";'Kollegen-Urlaubsangabe'!$A2)
2. folgender Code zum sortieren nach dem Prinzip:
erst alles absteigend, dann den Bereich mit Daten aufsteigend.
Sub Sortieren()
With Sheets("Anwesenheit 2021").Range("A3:NN50")
.Sort key1:=.Cells(1, 1), order1:=xlDescending, Header:=xlNo
.Resize(WorksheetFunction.CountIf(.Columns(1), "?*")).Sort key1:=.Cells(1, 1), order1:= _
xlAscending, Header:=xlNo
End With
End Sub
Gruß Daniel
Anzeige
AW: Sortiern per VBA, so gehts
06.01.2021 14:16:32
Ronny
Grüße an euch,
sooo, hab mal alles von euch durchgetestet:
an Onur:
ist ja auch sowas wie die Trickserei von Yal 😁 , natürlich muß die Suchfunktion noch angepasst werden da nicht alphabetisch sortiert wurde, aber ich habs hinbekommen 💪.
Auf jeden Fall ist das auch eine Lösung 👍 und solches Umdenken muß ich mir merken, spart so manche Forumsfragen.
an Daniel:
deine Code gefällt mir am besten und sieht am saubersten aus, welchen ich schon in meiner Datei verbaut habe und alles Super läuft.👍
Also noch mal vielen Dank an euch alle und ich sehe mein Problem als gelöst (mit 3 Lösungen) an.
Ich wünsch euch was...
Ronny
Anzeige
AW: Sortiern per VBA, so gehts
08.01.2021 23:45:44
Steve
Jaja der Daniel - hat auch diesmal die Excelwelt gerettet ;)
Danke Dir nochmal für Deine Hilfe bei meinem Sortierproblem damals ^^
Gruß Steve

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige