View Single Post
  #6   Report Post  
Posted to microsoft.public.excel.programming
Dana DeLouis[_3_] Dana DeLouis[_3_] is offline
external usenet poster
 
Posts: 690
Default Calling Excel array functions in VBA

Just a slightly different way from Tom's using Excel XP.

Dim v As Variant
v = [Transpose(Transpose(SMALL(A1:A10,{1,2,3})))]

HTH
--
Dana DeLouis
Using Windows XP & Office XP
= = = = = = = = = = = = = = = = =


"Harlan Grove" wrote in message
...
"Bob Phillips" wrote...
I thought this, but it just gives me an error 2015.

..
"Tom Ogilvy" wrote in message
varr = Evaluate("SMALL(A1:10,{1,2,3})")

..

This doesn't seem to work in Excel 97 either. But the following does.

varr = Evaluate("INDEX(SMALL(A1:A10,{1,2,3}),0)")

Just another case of the wonders and mysteries of Excel's array semantics,

which
Microsoft has never bothered to document in detail, perhaps because no one

at
Microsoft knows what those semantics are either.

To be more precise, if I enter

=SMALL(A1:A10,{1,2,3})

as a nonarray formula in a cell, I get the same result as if I had entered

the
array formula

=INDEX(SMALL(A1:A10),{1,2,3}),1)

in a cell. However, if I enter the nonarray formula

=IF(A1:A10AVERAGE(A1:A10),A1:A10)

in any cell in B11:IV65536 (so implicit indexing doesn't kick in), this

formula
returns #VALUE!. However, entering the same formula as an array formula in

a
single cell gives the first entry from the array result.

Functions that invariably return #VALUE! when not entered as array

formulas
return arrays when called from Evaluate. Functions that return nonerror

values
when not entered as array formulas return only the first value when called

from
Evaluate. AIN'T EXCEL SWELL?! Wanna make a bet blinking text makes it into

Excel
as a cell format option before Microsoft adds any orthogonality to its

array
semantics?

--
To top-post is human, to bottom-post and snip is sublime.