Reading from a excel sheet to an array

G

Guest

i am running simulation analysis. Each simulation returns results comes in
cells b60 to b85 of sheet2. next simulation will also return its output in
the same range.

suppose i am running 10 simulations. each simulation output is basically a
10 rows by 1 column range in sheet2. this results need to go into an array
called FinalOutput which would be a 26 by 10 array. I want to read the entire
range "b60 to b85" in sheet2 into the FinalOutput array. Basically depending
on the simulation number, an entire column of FinalOutput array gets created.
so simulation 1 output gets transferred to column 1 of final output array and
so on. is there some way i can transfer an entire range into a column of an
array.

thanks
pradip
 
M

Mangesh

something like this:

Set rng = Range("A1:A3")

For i = 1 To 3
a(i, 1) = rng(i, 1)
Next i

Range("A13").Resize(3, 2) = a


Mangesh
 
T

Tom Ogilvy

Not unless you want to have an array of arrays. however, for so small a
range, you shouldn't have much impact.
 
A

Alan Beban

Pradip said:
i am running simulation analysis. Each simulation returns results comes in
cells b60 to b85 of sheet2. next simulation will also return its output in
the same range.

suppose i am running 10 simulations. each simulation output is basically a
10 rows by 1 column range in sheet2. this results need to go into an array
called FinalOutput which would be a 26 by 10 array. I want to read the entire
range "b60 to b85" in sheet2 into the FinalOutput array. Basically depending
on the simulation number, an entire column of FinalOutput array gets created.
so simulation 1 output gets transferred to column 1 of final output array and
so on. is there some way i can transfer an entire range into a column of an
array.

thanks
pradip
??? Where is the FinalOutput array between simulations?

Alan Beban
 
A

Alan Beban

It isn't at all clear what your process is, but on the narrow question
of transferring the contents of a column to a column of an array, if the
functions in the freely downloadable file at
http:/home.pacbell.net/beban are available to your workbook, the
following will transfer the contents of the range to the 4th "column" of
the array FinalOutput if it is an array of 26 rows and at least n columns:

n=4 'Simulation number
Set rng = Sheets("sheet2").Range("b60.b85")
ReplaceSubArray FinalOutput, rng, 1, n

This can, of course, also be done directly by

For i = 1 to 26
FinalOutput(i,n) = rng(i)
Next

Alan Beban
 
A

Alan Beban

Alan said:
It isn't at all clear what your process is, but on the narrow question
of transferring the contents of a column to a column of an array, if the
functions in the freely downloadable file at
http:/home.pacbell.net/beban are available to your workbook, the
following will transfer the contents of the range to the 4th "column" of
the array FinalOutput if it is an array of 26 rows and at least n columns:

n=4 'Simulation number
Set rng = Sheets("sheet2").Range("b60.b85")
ReplaceSubArray FinalOutput, rng, 1, n

This can, of course, also be done directly by

For i = 1 to 26
FinalOutput(i,n) = rng(i)
Next

Alan Beban

Undoubtedly faster (but I didn't test that) would be

arrTemp = rng
For i = 1 to 26
FinalOutput(i,n) = arrTemp(i,1)
Next

Alan Beban
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top