The term "eta lambda" is short for "eta reduced lambda". Although the name sounds complicated, the intent is actually the reverse. Eta lambda refers to a simpler syntax for passing in custom calculations to newer functions like BYROW, BYCOL, SCAN, REDUCE, etc. that are designed to take advantage of Excel's dynamic array engine. Let's look at an example.

Eta lambda example

In the worksheet above, the goal is to calculate an average for each person in the list based on the four quiz scores as shown. Before dynamic array formulas were introduced to Excel, the problem would be solved with a formula like this in cell H5:

=AVERAGE(C5:F5)

After the formula was entered, it would be copied down to row 16 to calculate an average for all 12 students. Once dynamic arrays were introduced, it was possible to use the BYROW function to do the same thing in a single formula like this:

=BYROW(C5:F16,LAMBDA(x,AVERAGE(x)))

This formula can be entered into cell H5 and will spill into the range H5:H16. Notice that to call the AVERAGE function, we need to package it into a custom LAMBDA function like this:

=LAMBDA(x,AVERAGE(x))

Here, the "x" in the function is just a placeholder for the values in each row in C5:C16. The BYROW function iterates through each row in the range and calls the custom LAMBDA on each row which then invokes AVERAGE. This works fine, but the syntax is somewhat verbose for such a simple operation. With the introduction of eta lambdas, you can dispense with packaging the AVERAGE function in a custom LAMBDA and simply invoke the function by name like this:

=BYROW(C5:F16,AVERAGE)

The Excel formula engine knows how to pass each row into the AVERAGE function and the final result is exactly the same as before. You can use the same syntax to call other functions like this:

=BYROW(C5:F16,SUM) // sum each row
=BYROW(C5:F16,MAX) // max of each row
=BYROW(C5:F16,MIN) // min of each row
=BYROW(C5:F16,COUNT) // count of each row
Note: The eta lambda syntax only works with functions that will accept a single argument like SUM, MIN, MAX, COUNT, COUNTA, etc. You can't use it with a function like LARGE that requires two arguments.