This page describes how to calculate the date of the Easter holiday.
The calculation of the date of the Easter holiday for a given year is rather involved because of
the way Easter is defined. Easter is always a Sunday, and that Sunday is the first Sunday after the first
ecclesiastical full moon that occurs on or after March 21. There are various algorithms for the
calculation of Easter, but most return an incorrect result for years greater than a value, which varies depending
on the algorithm being used. Of the various algorithm, the most reliable is that used by the
United States Naval Observatory.
You can calculate the date of Easter with formula below. It is accurate for the years from 1900 to
2368. The formula is:
where YYYY is a four digit year between 1900 and 2368. The formula returns an incorrect for
some years past 2369.
The date of Easter can be computed in VBA. The algorithm below is from the United States Naval Observatory, at
Computing The Date Of Easter.
Public Function EasterUSNO(YYYY As Long) As Long
Dim C As Long
Dim N As Long
Dim K As Long
Dim I As Long
Dim J As Long
Dim L As Long
Dim M As Long
Dim D As Long
C = YYYY \ 100
N = YYYY - 19 * (YYYY \ 19)
K = (C - 17) \ 25
I = C - C \ 4 - (C - K) \ 3 + 19 * N + 15
I = I - 30 * (I \ 30)
I = I - (I \ 28) * (1 - (I \ 28) * (29 \ (I + 1)) * ((21 - N) \ 11))
J = YYYY + YYYY \ 4 + I + 2 - C + C \ 4
J = J - 7 * (J \ 7)
L = I - J
M = 3 + (L + 40) \ 44
D = L + 28 - 31 * (M \ 4)
EasterUSNO = DateSerial(YYYY, M, D)
You can call this from a worksheet cell with a formula like
where YYYY is a four digit year.
A shorter function, shown below, returns the correct result for the years between 1900 and 2099.
Public Function EasterDate2(Yr As Integer) As Date
Dim D As Integer
D = (((255 - 11 * (Yr Mod 19)) - 21) Mod 30) + 21
EasterDate2 = DateSerial(Yr, 3, 1) + D + (D > 48) + 6 - ((Yr + Yr \ 4 + _
D + (D > 48) + 1) Mod 7)
Enter a four digit year in the text box below to calculate the date of Easter for that year.
||This page last updated: 30-Sept-2009.