Inhaltsverzeichnis
Suchen
Links
|
|
Geburtstagssortierung
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 Datumsangaben sortiert, also nach dem Alter - 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. Leichter geht es mit einer oder mehreren Hilfsspalten - die man ja ausblenden oder nachher wieder löschen kann (letzteres sehe ich aber als wenig sinnvoll an…)
Die erste Abbildung dient nur zur Veranschaulichung. Hier sind lediglich die Zellen in Spalte C mit dem benutzerdefinierten Zahlenformat "MM.TT" versehen. Da dadurch außer der Optik nichts an den ursprünglichen Daten verändert wird ist dies für die gewünschte Sortierung unbrauchbar - also nicht von der Optik verwirren lassen…
|
|
A |
B |
C |
1 |
|
|
|
2 |
Claudia |
16.09.63 |
09.16. |
3 |
Karl |
21.02.77 |
02.21. |
4 |
Helmut |
19.11.85 |
11.19. |
5 |
Else |
22.05.90 |
05.22. |
Formeln der Tabelle |
C2 : =B2
C3 : =B3
C4 : =B4
C5 : =B5
|
|
|
Mit der Formel des nächsten Beispiels lässt sich die Geburtstagsliste einwandfrei sortieren. Das Datum wird in Text umgewandelt, dabei wird das Geburtsjahr einfach weggelassen und die Monatsangabe vor die Tagesangabe gestellt. Einer korrekten Sortierung nach dem Geburtstag steht nichts mehr im Weg:
|
|
A |
B |
C |
1 |
|
|
|
2 |
Karl |
21.02.77 |
02.21. |
3 |
Else |
22.05.90 |
05.22. |
4 |
Claudia |
16.09.63 |
09.16. |
5 |
Helmut |
19.11.85 |
11.19. |
Formeln der Tabelle |
C2 : =TEXT(B2;"MM.TT.")
C3 : =TEXT(B3;"MM.TT.")
C4 : =TEXT(B4;"MM.TT.")
C5 : =TEXT(B5;"MM.TT.")
|
|
|
Im nächsten Beispiel funktioniert die Sortierung genau so einwandfrei mit etwas anderen Formeln in der Hilfsspalte:
|
|
A |
B |
C |
1 |
|
|
|
2 |
Karl |
21.02.77 |
2,21 |
3 |
Else |
22.05.90 |
5,22 |
4 |
Claudia |
16.09.63 |
9,16 |
5 |
Helmut |
19.11.85 |
11,19 |
Formeln der Tabelle |
C2 : =MONAT(B2)+TAG(B2)/100
C3 : =MONAT(B3)+TAG(B3)/100
C4 : =MONAT(B4)&","&TAG(B4)
C5 : =MONAT(B5)&","&TAG(B5)
|
|
|
Zum Schluss noch eine Lösung zum Anzeigen des nächsten anstehenden Geburtstages:
(die Berechnung des Beispiels fand im September 2007 statt)
|
|
A |
B |
C |
1 |
|
|
|
2 |
Helmut |
19.11.85 |
19.11.07 |
3 |
Karl |
21.02.77 |
21.02.08 |
4 |
Else |
22.05.90 |
22.05.08 |
5 |
Claudia |
16.09.63 |
16.09.08 |
Formeln der Tabelle |
C2 : =WENN(DATUM(JAHR(HEUTE());MONAT(B2);TAG(B2))<HEUTE();DATUM(JAHR(HEUTE())+1;MONAT(B2);TAG(B2)); DATUM(JAHR(HEUTE());MONAT(B2);TAG(B2)))
C3 : =WENN(DATUM(JAHR(HEUTE());MONAT(B3);TAG(B3))<HEUTE();DATUM(JAHR(HEUTE())+1;MONAT(B3);TAG(B3)); DATUM(JAHR(HEUTE());MONAT(B3);TAG(B3)))
C4 : =WENN(DATUM(JAHR(HEUTE());MONAT(B4);TAG(B4))<HEUTE();DATUM(JAHR(HEUTE())+1;MONAT(B4);TAG(B4)); DATUM(JAHR(HEUTE());MONAT(B4);TAG(B4)))
C5 : =WENN(DATUM(JAHR(HEUTE());MONAT(B5);TAG(B5))<HEUTE();DATUM(JAHR(HEUTE())+1;MONAT(B5);TAG(B5)); DATUM(JAHR(HEUTE());MONAT(B5);TAG(B5)))
|
|
|
Zunächst wird geprüft ob der Geburtstag im aktuellen Jahr vor dem heutigen Datum liegt:
|