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

Alan Beban wrote...
..=2E.
Cute. But I suspect the real reason you don't want to deal with it is
that the so-called "efficiency" to which you and many
programmer/developers sometimes refer often involves nanoseconds of
difference that are totally irrelevant to most users in most
applications; interesting to you for purposes of posting oneupmanship,
but somewhat misleading for users generally.


Fine. Then consider whether the MakeArray formula,

=3DINDEX(DataTable,INT((MATCH(J1=AD9,MakeArray(Dat aTable,1),0)-1)
/COLUMNS(DataTable))+1,COLUMNS=AD(DataTable))

a single MATCH against the data range transformed into a 1D array, with
the result adjusted by a division inside INT to return the row number,
against the ArrayMatch formula,

=3DOFFSET(INDIRECT(ArrayMatch(J=AD19,dataTable,"A" )),0,
-INDEX(ArrayMatch(J19,dataTab=ADle),1,2)+COLUMNS(da taTable))

first returning the cell address of the matching cell then using
another call to fix the column offset. It's subjective whether the row
index contortions of the MakeArray formula are more obscure than the
column offset contortions of the 2 ArrayMatch formula.

For that matter, you could also have used

=3DINDEX(DataTable,INDEX(ArrayMatch(J19,DataTable) ,1),COLUMNS(DataTable))

which would have been a LOT simpler than either of the others.
Simplicity is good.

Both the MakeArray and the single ArrayMatch formulas involve no
volatile function calls, so they won't cause Excel to prompt users to
save any file containing them if users try to close such workbooks
without making any changes. Your two ArrayMatch formula, due to OFFSET
and INDIRECT calls, would cause such confusing prompts.

Is that an acceptable user consideration?