Microsoft Excel

Das Portal zum Thema Excel-Formeln

Gruppe: Datum/Zeit

Beitrag: Wer hat als nächstes Geburtstag

Aufgabe
Du hast eine Adreßliste mit Geburtstagen nach Namen oder sonstwie sortiert. Nun möchtest du wissen (ohne, daß die Liste irgendwie umsortiert werden muß), wer als nächstes (ab/inklusive heute) Geburtstag hat.

Lösung
Datumsspalte: A
Namensspalte: B

nächstes Geburtsdatum in Zelle D1:
{=INDEX(A1:A100;VERGLEICH(MIN(WENN(A1:A100<>"";REST((MONAT(A1:A100)+TAG(A1:A100)/100-MONAT(HEUTE())-TAG(HEUTE())/100)+0,001;12,31)));WENN(A1:A100<>"";REST((MONAT(A1:A100)+TAG(A1:A100)/100-MONAT(HEUTE())-TAG(HEUTE())/100)+0,001;12,31));0))}

Der entsprechende Name:
=sverweis(D1;A:B;2;0)

Tage bis zum nächsten Geburtstag:
=DATUM(JAHR(HEUTE())+((MONAT(D1)*50+TAG(D1)-MONAT(HEUTE())*50-TAG(HEUTE()))<0);MONAT(D1);TAG(D1))-HEUTE()

Falls am Datum in D1 mehrere Geburtstag haben, ermittelt man mit
{=INDEX(B1:B100;KKLEINSTE(WENN(A1:A100<>"";WENN(MONAT(A1:A100)+TAG(A1:A100)/100=MONAT(D1)+TAG(D1)/100;ZEILE(1:100)));2))}
den 2. und mit
{=INDEX(B1:B100;KKLEINSTE(WENN(A1:A100<>"";WENN(MONAT(A1:A100)+TAG(A1:A100)/100=MONAT(D1)+TAG(D1)/100;ZEILE(1:100)));3))}
den dritten, usw.

Die Datumsspalte darf keinen Text enthalten; - Leerzellen sind erlaubt.

Falls ein Spaltenkopf vorhanden ist, in obiger Formel A1 durch A2 ersetzen.

Kürzere Alternative von Christian Hapke 03.11.07:

D1:{=WENN(ZEILE(A1) > ANZAHL(A:A);"";HEUTE()+KKLEINSTE(WENN(A$2:A$100 < > "";DATUM((TEXT(A$2:A$100;"MM/TT") < TEXT(HEUTE();"MM/TT"))+JAHR(HEUTE());MONAT(A$2:A$100);TAG(A$2:A$100))-HEUTE());ZEILE(A1)))}

Diese Variante bringt als Ergebnis nicht das Geburtsjahr der Person, sondern das Jahr des Geburtstages also das aktuelle oder das nächste Jahr. Kopiert man die Formel nach unten bringt Sie den übernächsten, usw...

Der entsprechende Name wird dann mit
{=WENN(D2="";"";INDEX(B:B;KKLEINSTE(WENN(TEXT(A$2:A$100;"TTMM")=TEXT(D2;"TTMM");ZEILE($2:$100));SUMME(N(D$1:D2=D2)))))}
gefunden. SO wie man den Namen findet, könnte man bei Bedarf auch das Geburtsjahr finden.