Wie is er eerst jarig?

Voorbeeldbestanden bij dit artikel:
  • Wie is er eerst jarig?
  • Inleiding

    Hier even tussendoor een interessant forumprobleem van vandaag. MagicStefan had graag een formule gehad om te berekenen welke persoon eerst jarig is (het Worksheet forum werd afgesloten dus deze link werkt niet meer). Je hebt een lijst met namen en bijbehorende geboortedatum. Mijn voorstel voor de formule staat in het eerste tabblad:

    Uitwerking

    In kolom C berekenen we voor elke persoon het aantal dagen tot de volgende verjaardag. Dus dat gaat van 0 tot en met 365. Als we van die getallen het minimum nemen, dan weten we het minimale aantal dagen dat we nog moeten wachten vooraleer we de volgende verjaardag kunnen vieren. Dat getal staat in cel C9.

    Hoe zit de formule in cel C3 in elkaar? We maken het verschil tussen 2 datums: we trekken de dag van vandaag af van een andere datum die we berekenen. Daar zijn 2 mogelijkheden:

    1. als de persoon dit jaar nog niet jarig was, nemen we de dag dat hij dit jaar jarig zal zijn
    2. als de persoon dit jaar al wel jarig was, dan nemen we zijn verjaardag van volgend jaar

    Dan resten er ons nog 2 vragen:

    1. de dag dat iemand dit jaar jarig is, vind je via DATUM(JAAR(VANDAAG());MAAND(geboortedatum);DAG(geboortedatum)). Je "projecteert" m.a.w. de geboortedatum x aantal jaren de toekomst in, naar dit jaar.
    2. nagaan of iemand dit jaar al jarig was, kan je met (DagDatIemandDitJaarJarigIs < VANDAAG()). Je vergelijkt de DagDatIemandDitJaarJarigIs (zie hierboven) met vandaag. Welke is het kleinste? De haakjes rond de vergelijking vervangen een ALS-constructie.

    En zo zit mijn voorstel in elkaar. Als laatste stap zoeken we nog de persoon op die eerst jarig is, met de formule in cel B9. Die is redelijk standaard, dus behoeft weinig uitleg.

    Als 2 of meer mensen dezelfde verjaardag hebben, geven mijn formules slechts 1 persoon weer. Bezige bij GiMe verhielp dit en ook sorteerde hij alle personen op aantal dagen tot de volgende verjaardag. Zie het tweede tabblad in het bestand. Ik heb er zelf nog een aantal wijzigingen doorgevoerd, maar heb niet aan de essentie geraakt. De belangrijkste formule, in kolom A, is gelijkaardig aan die van mij. Enkel laat GiMe toe dat er meerdere mensen dezelfde verjaardag hebben. Hij gebruikt de functie RIJ(), een techniek die ik jullie al introduceerde bij het automatisch sorteren. Zie tevens mijn niet-triviale toevoeging voor de leeftijd.

    Schrikkeldagen

    We moeten wel nog oppassen voor schrikkeldagen. Daar zullen we nog wat aan moeten sleutelen… Nu zou het bijvoorbeeld kunnen dat iemand die geboren is op 29 februari, de eerstvolgende verjaardag viert op bv. 1 maart van volgend jaar! Ik sluit hier af met de link naar mijn pagina om de kans te berekenen dat X mensen dezelfde verjaardag hebben. Tot de volgende!




    Over Wim

    Wim Gielis is Business Intelligence consultant en Excel expert

    Andere links