*On the illustration all formulas are array. The range that each formula spans is bordered, and the first formula on each block is written on the top of that block.*

Range `A4:A103`

is an input vector (which is numeric), range `C4:G23`

is a given (input) permutation of the rows of `A4:A103`

(necessarily positive non-zero integer numbers not greater then the length of the input vector).

Let us I interpret the permutation matrix as set of rows.

**How to compute for each row in a constant number of cells the minimal number in the input vector?** By the constant number of cells, I mean solution, that would require fixed number of cells for each row, regardless of the number of columns in permutation. (In the production case each dimension is much, much bigger; there is about 100 columns in the permutation matrix.)

I don’t ask for VBA solutions. If it is necessary the solution can use a free and publicly available Excel add-on, like MoreFunc, but I’d prefer to keep it vanilla Excel 2007 or later.

I thought that the formula `{=MIN(INDEX(INDIRECT($A$2);$C4:$G4))}`

would solve my problem. Surprisingly, Excel seems to not take into account the array nature of the formula, and evaluates it as if it was written as `=MIN(INDEX(INDIRECT($A$2);$C4)`

which is equivalent to dysfunctional `=INDEX(INDIRECT($A$2);$C4)`

.

On the other hand, we can see the argument to the `MIN`

is understood as array in the range I4:M4.

`INDEX`

works in some strange ways!

Normally `INDEX`

can’t return an array – although you seem to have found the one exception to that – when it’s an array formula entered in a range.

You should be able to use `OFFSET`

to return the required array that will work within `MIN`

, i.e. with this formula

`=MIN(N(OFFSET(INDIRECT($A$2);$C4:$G4-1;0)))`

confirmed with `CTRL`+`SHIFT`+`ENTER`

Tags: excelexcel