View Single Post
  #3   Report Post  
Posted to microsoft.public.excel.programming
[email protected] jhcoxx@hotmail.com is offline
external usenet poster
 
Posts: 9
Default Use VBA to get values from named range that contains an arrayformula expression

Thanks, Peter!

(Memo to self - when posting between 1 AM and 8 AM, give lots of
explanation about what I'm asking!)

Using your method, I generated the following cells in a worksheet


A B
1 1 10
2 2 19
3 3 32
4 4 49
5 5 70
6 6 95
7 7 124
8 8 157
9 9 194
10 10 235

To define what I should be expecting from the Linest formula, I
selected the range C1:E10 and in that range entered the array formula
=Linest(KnownY,KnownX,True,True). This gave the following values


A B C D E
1 1 10 25 -39 #N/A
2 2 19 1.788854382 11.09954954 #N/A
3 3 32 0.960651706 16.24807681 #N/A
4 4 49 195.3125 8 #N/A
5 5 70 51562.5 2112 #N/A
6 6 95 #N/A #N/A #N/A
7 7 124 #N/A #N/A #N/A
8 8 157 #N/A #N/A #N/A
9 9 194 #N/A #N/A #N/A
10 10 235 #N/A #N/A #N/A

(Obviously, I made the array formula range too large, but that
shouldn't affect anything below)

Next, I used Insert | Names | Define to define a named range PNR
(Peter's Named Range) and in the Refers to box put the formula used
above =Linest(KnownY,KnownX,True,True)

(I freely admit that your formula puzzled me - too early again,
perhaps - but the KnownX^{1,2} part blew right by me, and it wasn't
accepted when I tried to enter it as part of the array formula for a
worksheet range. Howerver, for my true application, I need the
equivalent of the statistics generated by Linest, so I went ahead.)

In the VBA code, your

Arr =Evaluate("PNR")

was the piece that was I needed - after that, even a plain

Debug.Print Arr(i,n)

would return the same values as seen in the worksheet (for appropriate
values of i and n, of course) !

BTW, I did define a second named range/array formula via Insert |
Names | Define using your expression

refersto: =LINEST(KnownY, KnownX^{1,2})

and it works just like you said - I just don't understand what it's
calculating for me. :)


Again - thanks, Peter!

James


On Apr 27, 5:44*am, "Peter T" <peter_t@discussions wrote:
Hi James,

It's not clear what you are doing, eg have you created a named range or a
named formula or both, how are you using Index, etc.

I did the following -

Created two dynamic named ranges KnownX & KnownY to refer to cells in
columns A & B

Created a named formula
"nmLinest" refersto: =LINEST(KnownY, KnownX^{1,2})

I entered some X's in col-A, FWIW 1, 2 & 3
For Y's, in B1: =A1^2*2+A1*3+5
and filled down

In VBA -

arr = Evaluate("nmLinest")

For i = 1 To UBound(arr) ' to 3
Debug.Print Application.Index(arr, i)
Next

*1.99999999999999
*3.00000000000004
*4.99999999999997

A tad of rounding would return correct results of 2, 3 & 5 in this contrived
example.

Regards,
Peter *T