In the first months of the Peltier Tech blog, I wrote an article about Calculating Easter, which is a complicated task. I shared a couple of worksheet formulas to calculate the date of Easter, then I posted two VBA UDFs (User Defined Functions) to compute Easter, one for “Western” Easter and the other for Orthodox Easter. Then I talked briefly about the differences between them.

Without much ado, I will show below two new Lambda functions that can replace the earlier VBA UDFs. It actually was easy to write the Lambdas; much easier than writing an old-school worksheet formula would be.

The VBA formulas were written by Norman Harker, based on Claus Tøndering’s article Easter. Another discussion can be found in the Pi Mu Epsilon Journal, Vol 9 No 6 (scroll down to page 374).

The Lambda formulas can be used like any others, entered as shown in a cell appended by a reference to the year of interest in parentheses, or by defining a Name with the Lambda formula as the Refers-To function. In Excel, the calculations are only valid for the years 1900 or later.

## Lambda to Compute Western Easter

```
=LAMBDA(yr,
LET(
G,MOD(yr,19),
C,INT(yr/100),
H,MOD(C-INT(C/4)-INT((8*C+13)/25)+19*G+15,30),
I,H-INT(H/28)*(1-INT(29/(H+1))*INT((21-G)/11)),
J,MOD(yr+INT(yr/4)+I+2-C+INT(C/4),7),
L,I-J,
EM,3+INT((L+40)/44),
ED,L+28-(31*INT(EM/4)),
DATE(yr,EM,ED))
)
```

## Lambda to Compute Eastern Orthodox Easter

```
=LAMBDA(yr,
LET(
G,MOD(yr,19),
I,MOD(19*G+15,30),
J,MOD(yr+INT(yr/4)+I,7),
L,I-J,
EM,3+INT((L+40)/44),
ED,L+28-(31*INT(EM/4)),
JulAdj,10+INT(yr/100)-16-INT(yr/400)+4,
DATE(yr,EM,ED)+JulAdj)
)
```

## Using a Lambda Formula in a Cell

You can use either of these formulas as is, adding any arguments in a list in parentheses after the Lambda. Our formulas have only one argument, the year, denoted as `yr`

at the beginning of the Lambdas. You could enter the argument as a numeric value or as a reference to a cell containing the value. To calculate Western Easter for this year, 2024, enter this into a cell:

```
=LAMBDA(yr,
LET(
G,MOD(yr,19),
C,INT(yr/100),
H,MOD(C-INT(C/4)-INT((8*C+13)/25)+19*G+15,30),
I,H-INT(H/28)*(1-INT(29/(H+1))*INT((21-G)/11)),
J,MOD(yr+INT(yr/4)+I+2-C+INT(C/4),7),
L,I-J,
EM,3+INT((L+40)/44),
ED,L+28-(31*INT(EM/4)),
DATE(yr,EM,ED))
)(2024)
```

To calculate Eastern Easter for a year entered into cell A1, enter this into a cell:

```
=LAMBDA(yr,
LET(
G,MOD(yr,19),
I,MOD(19*G+15,30),
J,MOD(yr+INT(yr/4)+I,7),
L,I-J,
EM,3+INT((L+40)/44),
ED,L+28-(31*INT(EM/4)),
JulAdj,10+INT(yr/100)-16-INT(yr/400)+4,
DATE(yr,EM,ED)+JulAdj)
)(A1)
```

## Using a Lambda Formula as a User Defined Function

The great flexibility of a Lambda formula is that you can enter it once, give it a Name, and use it anywhere in the workbook by that name.

On the Formulas tab of Excel’s ribbon, click on Define Name. In the dialog, enter a name for your formula (let’s use `WesternEaster`

). Enter any comment, such as “Input a year and calculate the date of Easter.” And in the Refers To box, enter the Lambda formula as shown above (without the trailing reference in parentheses). The dialog doesn’t give us the nice indented formula structure, but it still works fine.

Now you can use this anywhere in your workbook, in a cell or even in another formula, by entering it into a cell like one of these:

```
=WesternEaster(2024)
=WesternEaster(A1)
```

Couldn’t be easier.

## Revision: One Lambda to Compute Eastern or Western Easter

David suggested in the comments that having one Lambda function to compute Easter according to either calendar would be nice. The following Lambda takes two arguments, the year and a boolean which is True for Eastern Easter and False for Western Easter.

```
=LAMBDA(yr,Eastern,
LET(
G,MOD(yr,19),
C,if(eastern,0,INT(yr/100)),
H,if(eastern,0,MOD(C-INT(C/4)-INT((8*C+13)/25)+19*G+15,30)),
I,if(eastern,MOD(19*G+15,30),H-INT(H/28)*(1-INT(29/(H+1))*INT((21-G)/11))),
J,MOD(yr+INT(yr/4)+I+if(eastern,0,2-C+INT(C/4)),7),
L,I-J,
EM,3+INT((L+40)/44),
ED,L+28-(31*INT(EM/4)),
JulAdj,if(eastern,10+INT(yr/100)-16-INT(yr/400)+4,0),
DATE(yr,EM,ED)+JulAdj)
)
```

When used in a cell, the formula would look like this:

```
=LAMBDA(yr,Eastern,
LET(
G,MOD(yr,19),
C,if(eastern,0,INT(yr/100)),
H,if(eastern,0,MOD(C-INT(C/4)-INT((8*C+13)/25)+19*G+15,30)),
I,if(eastern,MOD(19*G+15,30),H-INT(H/28)*(1-INT(29/(H+1))*INT((21-G)/11))),
J,MOD(yr+INT(yr/4)+I+if(eastern,0,2-C+INT(C/4)),7),
L,I-J,
EM,3+INT((L+40)/44),
ED,L+28-(31*INT(EM/4)),
JulAdj,if(eastern,10+INT(yr/100)-16-INT(yr/400)+4,0),
DATE(yr,EM,ED)+JulAdj)
)(2024,TRUE)
```

When defined as the name `Easter`

in the Define Name dialog, it would be used like this:

`=Easter(2024,TRUE)`

Thanks for the great suggestion, David!