How do I make an array formula out of a function that normally takes array arguments?

What I’ve managed to do successfully:


This formula will iterate the sine function over rows 1 through 3, returning {SIN(A1);SIN(A2);SIN(A3)}. I can then pass the array to the AVERAGE function:


This returns a single number, the average of the three sines.

However, I am unable to get the same behavior out of an inner function that normally takes an array. For example, if I wanted to find the max number from columns A through C over three rows, I might write something like this:


However, this statement will search the 3x3 matrix for the single largest number and return it, i.e. {MAX(A1:C3)}. Is there any way to get each row to evaluate individually, to get {MAX(A1:C1);MAX(A2:C2);MAX(A3:C3)}?

And yes, I know that I could just use a column of intermediate cells to hold the MAX values and then AVERAGE them, but I’d rather not clutter up the spreadsheet.

If I am not wrong, I think a formula like this can do the job:


I think the issue with MAX() by their own nature always returns the maximum in the scope of the function.

Good idea. However, that formula leaves out column B. I think a full replacement would look like this:


I’d still prefer to know how to use the MAX function if able, since it doesn’t balloon as the number of columns increases.

I had the same problem with the AND and OR functions. They aggregate the entire range before applying the array just like MAX. Those can be replaced with * and + respectively.