Inhaltsverzeichnis
Suchen
Links
|
|
Geburtstagssortierung - mit VBA
Versionen: Alle
Manchmal steht man vor dem Problem, eine Geburtstagsliste zu erstellen, aber keine Sortierung passt. Da Datumsangaben in Excel als serielle Zahl verarbeitet werden wird zwar eine Liste korrekt nach den darin enthaltenen Werten sortiert - für eine Geburtstagsliste taugt das aber nichts. Abhilfe kann eine selbst gestrickte Sortierprozedur in VBA schaffen, die aber für Anfänger nicht so einfach zu realisieren ist. Auch hier funktioniert es mit einer Hilfsspalte - die nachher wieder gelöscht wird.
Dazu einfach den folgenden Code in ein Modul schreiben oder kopieren:
Sub Sortieren()
Dim iRow As Integer
iRow = Cells(Rows.Count, 1).End(xlUp).Row
Range("C1").FormulaR1C1 = "=TEXT(RC[-1],""MM.TT"")"
Range("C1:C" & iRow).FillDown
Range("A1").CurrentRegion.Sort _
key1:=Range("C1"), order1:=xlAscending, _
key2:=Range("A1"), order2:=xlAscending, _
header:=xlNo
Columns("C").Delete
End Sub
Hier die Erläuterung der einzelnen Schritte:
Die Ausgangsliste, nach Namen sortiert:
|
|
A |
B |
1 |
Claudia |
16.09.1963 |
2 |
Else |
22.05.1990 |
3 |
Helmut |
19.11.1985 |
4 |
Karl |
21.02.1977 |
|
|
Die Anweisung iRow = Cells(Rows.Count, 1).End(xlUp).Row zählt die Anzahl der Zeilen in der ersten Spalte.
Mit der Anweisung Range("C1").FormulaR1C1 = "=TEXT(RC[-1],""MM.TT"")" wird die Formel =TEXT(B1;"MM.TT.") in die Zelle C1 geschrieben.
|
|
A |
B |
C |
1 |
Claudia |
16.09.1963 |
09.16 |
2 |
Else |
22.05.1990 |
|
3 |
Helmut |
19.11.1985 |
|
4 |
Karl |
21.02.1977 |
|
|
|
Range("C1:C" & iRow).FillDown "kopiert" die Formel aus C1 nach C2:C4
|
|
A |
B |
C |
1 |
Claudia |
16.09.1963 |
09.16 |
2 |
Else |
22.05.1990 |
05.22 |
3 |
Helmut |
19.11.1985 |
11.19 |
4 |
Karl |
21.02.1977 |
02.21 |
Formeln der Tabelle |
C1 : =TEXT(B1;"MM.TT")
C2 : =TEXT(B2;"MM.TT")
C3 : =TEXT(B3;"MM.TT")
C4 : =TEXT(B4;"MM.TT")
|
|
|
Die Anweisung
Range("A1").CurrentRegion.Sort _
key1:=Range("C1"), order1:=xlAscending, _
key2:=Range("A1"), order2:=xlAscending, _
header:=xlNo
sortiert die Liste aufsteigend zuerst nach Spalte C (dem Geburtstag) und dann nach Spalte A
|
|
A |
B |
C |
1 |
Karl |
21.02.1977 |
02.21 |
2 |
Else |
22.05.1990 |
05.22 |
3 |
Claudia |
16.09.1963 |
09.16 |
4 |
Helmut |
19.11.1985 |
11.19 |
|
|
Die Spalte C wird mit der Anweisung Columns("C").Delete gelöscht und die fertig sortierte Geburtstagsliste steht zur Verfügung.
|
|
A |
B |
1 |
Karl |
21.02.1977 |
2 |
Else |
22.05.1990 |
3 |
Claudia |
16.09.1963 |
4 |
Helmut |
19.11.1985 |
|
|
Natürlich muss das Makro an die eigenen Bedürfnisse angepasst werden. Insbesondere die Hilfsspalte C muss entweder leer sein oder im Makro muss entsprechend eine andere Spalte gewählt werden.
Die Darstellung der Excel Tabellen auf dieser Seite erfolgte mit Excel Jeanie HTML 3.0 Download
Geburtstage sortieren - ohne VBA
Beispiele zur Altersberechnungen
|