Hallo Excel-fanaten,
Pasen berekenen in Excel, hoe doe je dat ook alweer ?
Neen neen, ik kom hier niet zelf een Excel-vraag stellen, maar wil er wel een woordje over kwijt…
Waarschuwing: dit artikel is uitsluitend bestemd voor oogkleploze denkers !
Ik ben steeds stomverbaasd, om niet te zeggen dat ik het altijd als een belediging van mijn ‘intelligentie’ aanvoel, als ik mensen die in andere omstandigheden tot extreem analytisch denken in staat zijn, klakkeloos zie aanvaarden dat “=EURO(("4/"&A1)/7+REST(19*REST(A1;19)-7;30)*14%;)*7-6” dé formule is om de paasdatum mee te berekenen, en vervolgens deze misvatting verder verspreiden.
(Mocht de vraag ernaar groot genoeg zijn, dan wil ik gerust een poging ondernemen om uit te leggen waarom dit pure onzin is)
Kan/mag die formule dan niet meer gebruikt worden ? Toch wel, want ze geeft het juiste resultaat in een periode beginnend bij onze grootouders en eindigend bij onze achterachterachterkleinkinderen, dus voor dat soort ‘praktische’ toepassingen best o.k.
Mijn betoog is daarom veel meer van academische dan van pragmatische aard.
Iedereen weet wellicht dat de paasdatum berekend wordt op basis van astronomische gegevens. De meeste hemellichamen hebben een (bijna) stabiele cyclus, maar, om maar de ‘bekendste’ te noemen, zon, aarde en maan hebben elk hun eigen cyclus, en daarom valt het niet mee om een vast patroon te vinden (denk maar aan schrikkeldagen of schrikkelseconden), zeker als we er ook rekening mee houden dat andere planeten voor nauwelijks merkbare maar toch relevante schommelingen kunnen zorgen.
In eeuwenoude geschriften heb ik een formule gevonden waarin (bijna tot in de perfectie, want die lichte invloed van andere planeten kon toen nog niet worden ingeschat) dat complexe patroon helemaal vervat zit.
Natuurlijk stond ik hier ook sceptisch tegenover, en dus heb ik het gecontroleerd.
Astronomen zijn, hoe ongelooflijk ook, in staat de precieze stand van de hemellichamen in de toekomst te bepalen (hoe zouden ze anders ruimtetuigen op ver verwijderde planeten kunnen laten landen?). Ze kunnen dat ook voor de verre toekomst. We mogen er dus gerust in zijn dat de paasdatums die we op de website van de Koninklijke Sterrenwacht van België vinden (1583 tot 3000) de juiste zijn.
Voor mijn controle moest ik er wel een Excelformule van maken (dat was even héél geconcentreerd bezig blijven). Excel is evenwel té beperkt om ze in één cel te krijgen, dus hulpcellen of een udf zijn onvermijdelijk.
Het resultaat is behoorlijk indrukwekkend :
De eerder genoemde formule geeft géén fouten in de periode 1900 tot 2200, maar slaat nadien serieus op hol met 322 fouten in de volgende 800 jaar, dus van 2201 tot 3000. Andere internetformules doen het of vergelijkbaar of nóg slechter.
‘Mijn’ formule geeft van 1900 tot 3000 welgeteld 0 (NUL!) fouten.
Méér dan 1 petje af voor de wetenschappers van toen die zelfs geen rekenmachientje hadden.
OK, jullie geduld is lang genoeg op de proef gesteld.
Als in A1 het jaartal staat, dan :
B1: =REST(11*(REST(A1;19)+1)+20+GEHEEL((((GEHEEL(A1/100)+1)*8)+5)/25)-5-(GEHEEL(((GEHEEL(A1/100)+1)*3)/4)-12);30)
C1: =44-ALS(OF(B1=24;EN(B1=25;REST(A1;19)+1>11));B1+1;B1)
D1: =ALS(C1<21;C1+30;C1)+7-REST((ALS(C1<21;C1+30;C1)+GEHEEL((A1*5)/4)-(GEHEEL(((GEHEEL(A1/100)+1)*3)/4)-2));7)
E1(pasen): =DATUM(A1;ALS(D1>31;4;3);ALS(D1>31;D1-31;D1))
Het is er aan te zien, niet ? Het was met al die noodzakelijke haken redelijk puzzelen om de gewonemensentaalformule van toen naar Excel te ‘vertalen’.
In vba luidt dat bv. zo :
Function pasen(j)
e = ((11 * ((j Mod 19) + 1)) + (((8 * (j \ 100 + 1)) + 5) \ 25) + 15 - (Int((3 * (j \ 100 + 1)) / 4) - 12)) Mod 30
If e = 24 Or (e = 25 And ((j Mod 19) + 1) > 11) Then e = e + 1
d = (IIf((44 - e) < 21, (44 - e) + 30, (44 - e))) + 7 - ((((j * 5) \ 4) - ((Int((3 * (j \ 100 + 1)) / 4) - 12) + 10) + (IIf((44 - e) < 21, (44 - e) + 30, (44 - e)))) Mod 7)
pasen = DateSerial(j, IIf(d > 31, 4, 3), IIf(d > 31, d - 31, d))
End Function
Mathematische groeten,
pitufo