View Single Post
  #7   Report Post  
Harlan Grove
 
Posts: n/a
Default

Jerry W. Lewis wrote...
....
Any idea about what it is doing without array entry that the result
depends on where the formula resides?


Implicit array indexing.

Enter {1;2;3;4;5;6;7;8} in A2:A9, {1,10,100,1000} in B1:E1, select
B2:E9, type the formula =$A2:$A9*B$1:E$1 and press [Ctrl]+[Enter]
rather than [Ctrl]+[Shift]+[Enter]. You should get the same result as
if you had entered B2:E9 as an array formula. Clear B2:E9, select
C4:F11, type the same formula and press [Ctrl]+[Enter].

This has been in Excel for a LONG, LONG time, but as with too much else
has never been properly documented.

Also, has anyone compiled a list of functions that require array entry


inside SUMPRODUCT?


It's not just inside SUMPRODUCT.

And we're talking phylum, class, order, family, genus and species when
it comes to a full description of built-in function array semantics.
There are three phyla: functions that always return arrays (FREQUENCY),
functions that always return scalars (SUM) and functions that can
return both (IF).

Within the first phylum, there are two classes. Those that provide
implicit array indexing, and those that don't. Given the setup above in
A2:A9 and B1:E1, select C3:E5, type the formula

=TRANSPOSE($A$2:$A$9)

and press [Ctrl]+[Enter]. Now select C7:E9, type the formula

=MMULT($C$3:$E$5,$C$3:$E$5)

and press [Ctrl]+[Enter]. Then again, select C3:C5 again, change the
formula to

=TRANSPOSE({1;2;3;4;5;6;7;8})

and press [Ctrl]+[Enter]. Then change the formula to

=TRANSPOSE($A$2:$A$9*10)

So it seems implicit array indexing should be called implicit range
indexing.

Anyway, if you want to learn how Excel works, read the developer
documentation and source code for Gnumeric.