Excel Formule voor de Eerste Paasdag

Geschreven door:

Ontdek in dit artikel de kortste én de langste Excel formule voor het berekenen van de Eerste Paasdag. Je hoeft hierna nooit meer online te zoeken naar de datum van Eerste Paasdag want met deze formules kun je van elk jaar de datum van de Eerste Paasdag berekenen. Maar daarvoor moeten we wel een aantal jaren terug in de geschiedenis.

De Duitse Excel specialist en MVP Hans W. Herber schreef ergens zo rond 1998 een wedstrijd uit om een zo kort mogelijke formule te bedenken om de Eerste Paasdag te berekenen tussen het jaar 1900 en 2078.

Je vraagt je nu misschien af waarom tussen 1900 en 2078. De allereerste datum waar Excel mee kan rekenen is namelijk 1 januari 1900. Natuurlijk zijn er oplossingen om ook met datums te werken voor 1 januari 1900 maar dan moet je denken aan VBA of aan het 1904-datum systeem. Maar daar ga ik in dit artikel geen aandacht aan besteden.

Overigens wordt er in alle formules van uitgegaan dat je het jaartal vermeldt in cel A1.

De winnaar
De winnaar was onbetwist de Duitser Norbert Hetterich die met slechts 45 karakters de oplossing aandroeg met de volgende formule.

= FLOOR( DAY( MINUTE( A1 / 38 ) / 2 + 56 ) & “/5/” & A1; 7 ) – 34

In het Nederlands zijn het 56 karakters en luidt de formule als volgt: = AFRONDEN.BENEDEN( DAG( MINUUT( A1 / 38 ) / 2 + 56 ) & “/5/” & A1; 7 ) – 34

Een alternatieve formule om de Eerste Paasdag te berekenen is: = DOLLAR(( “4/” & A1 ) / 7 + MOD( 19 * MOD( A1; 19 ) – 7; 30 ) * 14%; ) * 7 – 6

Deze formule luidt in het Nederlands: = EURO(( “4/” & A1 ) / 7 + REST( 19 * REST( A1; 19 ) – 7; 30 ) * 14%; ) * 7 – 6

Beide hebben 53 karakters en daarmee is dit in het Nederlands de kortste formule (vanwege de vertaling). Echter de eeuwige roem gaat naar Norbert Hetterich.

De langste formule
De langste formule kwam van George Simms en bevatte maar liefst 139 karakters.

=DATE(J;3;28)+MOD(24+19*MOD(J;19);30)-(MOD(24+19*MOD(J;19);30)>27)-MOD(INT(J+J/4)+MOD(24+19*MOD(J;19);30)-(MOD(24+19*MOD(J;19);30)>27)+1;7)

=DATUM(J;3;28)+REST(24+19*REST(J;19);30)-(REST(24+19*REST(J;19);30)>27)-REST(INTEGER(J+J/4)+REST(24+19*REST(J;19);30)-(REST(24+19*REST(J;19);30)>27)+1;7)

De meest raadselachtige formule
Deze kwam van Prasad DV. =TRUNC(DATE(A1;7;-CODE(MID(“NYdQJT_LWbOZeR]KU`”;MOD(A1;19)+1;1)))/7)*7+8

=GEHEEL(DATUM(A1;7;-CODE(DEEL(“NYdQJT_LWbOZeR]KU`”;REST(A1;19)+1;1)))/7)*7+8

Waarom tot het jaar 2078?
Je vraagt je misschien af waarom één van de voorwaarden van de wedstrijd was dat het ging om de Eerste Paasdag tussen 1 januari 1900 en 31 december 2078. Dat van 1 januari 1900 heb ik je al uitgelegd. Echter de reden van 2078 is, dat de formule in 2079 gewoon niet werkt.

Om de formule in 2079 werkend te krijgen, moet er bij het getal 56 één opgeteld worden zodat je uitkomt op 57. Dit is door sommigen weer mooi opgelost door gebruik te maken van de ALS functie zodat de formule er als volgt uit ziet:

= IF( A1 <> 2079; FLOOR( DATE( A1; 5; DAY( MINUTE( A1 / 38 ) / 2 + 56 )); 7 ) – 34; FLOOR( DATE( A1; 5; DAY( MINUTE( A3 / 38 ) / 2 + 57 )); 7 ) – 34 )

De Nederlandse variant hierop is:

= ALS( A1 <> 2079; AFRONDEN.BENEDEN( DATUM( A1; 5; DAG( MINUUT( A1 / 38 ) / 2 + 56 )); 7 ) – 34; AFRONDEN.BENEDEN( DATUM( A1; 5; DAG( MINUUT( A3 / 38 ) / 2 + 57 )); 7 ) – 34 )

Maar dit kan weer efficiënter door ervoor te zorgen dat wanneer het jaartal ongelijk is aan 2079, er bij het getal 56 nul wordt opgeteld en wanneer het jaartal gelijk is aan 2079 dat er één bij 56 wordt opgeteld.

Logische functie WAAR of ONWAAR
Hiervoor moet je weten dat wanneer een logische uitkomst WAAR is en je hierbij een getal optelt, bijvoorbeeld nul, de uitkomst 1 is. Is de uitkomst van een logische functie ONWAAR en je telt er nul bij op, dan is de uitkomst 0.

Ik daag je uit om dit te testen want dat is de enige manier om te ervaren dat dit ook daadwerkelijk zo werkt.

  1. Zet in cel A1 en A2 het getal 3.
  2. In cel A3 zet je de volgende (logische) formule: = A1 = A2. De uitkomst zal WAAR zijn.
  3. Zet nu in cel A4 de formule = A3 + 0.

En? Overtuigd?

De laatste stap is door in cel A1 of A2 een ander getal te plaatsen zodat de uitkomst in cel A3 ONWAAR wordt (4 is bijvoorbeeld ongelijk aan 3). Wat gebeurt er met cel A4?

Oké nu je overtuigd bent dat dit werkt, begrijp je dat wanneer we een logische functie toevoegen met als uitkomst 1 (WAAR) de uitkomst 57 is wanneer dit bij 56 wordt opgeteld. Wanneer de uitkomst ONWAAR is, zal er nul bij op worden geteld en de uitkomst 56 blijven.

De logische functie luidt in dit geval dat het jaartal in cel A1 gelijk moet zijn aan 2079. Met andere woorden A1 = 2079. Dat is dan ook de enige toevoeging aan de formule van Norbert Hetterich. In het Engels is de formule:

= FLOOR( DATE( A1; 5; DAY( MINUTE( A1 / 38 ) / 2 + 56 + ( A1 = 2079 ))); 7 ) – 34 en in het Nederlands:

= AFRONDEN.BENEDEN( DATUM( A1; 5; DAG( MINUUT( A1 / 38 ) / 2 + 56 + ( A1 = 2079 ))); 7 ) – 34

Let op de plek van de logische formule A1 = 2079

Tweede Paasdag
Je hebt nu kennis gemaakt met de formule voor de Eerste Paasdag. Het is dan vrij eenvoudig om de datum van de Tweede Paasdag te berekenen. Hoe? Door simpelweg 1 op te tellen bij de uitkomst van de formule voor de Eerste Paasdag Let ook even op de extra haakjes voor en na de oorspronkelijke formule.

Bijvoorbeeld: = ( AFRONDEN.BENEDEN( DAG( MINUUT( A1 / 38 ) / 2 + 56 ) & “/5/” & A1; 7 ) – 34 ) + 1

Wil je je uitkomsten checken? Kijk dan op www.datum.nl/pasen/XXXX waarbij de XXXX staat voor een jaartal.

Deel dit artikel gerust met al je vrienden, op Facebook of welke media dan ook en natuurlijk ben ik heel erg benieuwd naar jouw reactie.

Wilt u nog meer blogberichten lezen? Ga dan naar de pagina Blog/kennisbank.