You want to return values from an array spanning rows B3 - B9; but, they are elements 1 - 7 of the array to be used by the INDEX function (rows are off by 2).
The IF function looks at A3-A9 testing for blanks (i.e., no "x") that evaluates to: {True;True;True;False;True;False;True}. You want to map to the elements of the array.
If you use Row(A3:A9) it results in the array {3;4;5;6;7;8;9} which is ANDed with the IF test to produce {3;4;5;FALSE;TRUE;7;FALSE;9}. This would be passed to SMALL and result in a list starting with Client3, but 8 & 9 would produce errors because they are beyond the array.
So, you could use: IF($A$3:$A$9<>"x",ROW($A$3:$A$9)-2)
orIF($A$3:$A$9<>"x",ROW($A$1:$A$7))
or even:IF($A$3:$A$9<>"x",{1;2;3;4;5;6;7})
Bookmarks