pasting array output to sheet

G

Guest

my code generates output in an array of m by n dimensions (m rows and n
columns). Number of rows and columns depends on the input. now i want to
paste the result to sheet2 starting from cell B2. one of the way is as under:

For ctr15 = 1 To n
For ctr16 = 1 To m
Sheet2.Cells(1 + ctr16, 1 + ctr15).Value = FinalOutput(ctr16, ctr15)
Next ctr16
Next ctr15

This works fine, but the problem is it is too slow. excel paste the result
cell by cell and is very slow. Much faster code is when entire array is
pasted at a time. assuming 10 rows by 15 column output, code is:

Sheet2.Range("b2:p11") = FinalOutput

This also works. But problem is how to generalize the above code based on
different values of m and n, i.e. different rows and columns. I tried the
specifying just the corner left cell of the range, but that does not works
Sheet2.Range("b2") = FinalOutput
this just returns value on cell b2

please help
regards
pradip
 
A

Alan Beban

One way:

Set rng = Sheet2.Range("b2")
Range(rng(1,1),rng(10,15)) = FinalOutput

I didn't test the above, but if your code works, it should work.

Alan Beban
 
M

Mangesh

No it doesn't. A slight modification:

Set rng = Sheet2.Range("b2")
Range(rng.Address, rng.Offset(m - 1, n - 1).Address) = FinalOutput

- Mangesh
 
G

Guest

Hi Pradip,

Maybe you can use my code:

Sub TestMyArray()

'Declare array
'But, remember to start it from 1
'So, do not start it from 0

Dim FinalOutput(1 To 2, 1 To 4) As Integer

FinalOutput(1, 1) = 100
FinalOutput(1, 2) = 200
FinalOutput(1, 3) = 300
FinalOutput(1, 4) = 400
FinalOutput(2, 1) = 170
FinalOutput(2, 2) = 270
FinalOutput(2, 3) = 370
FinalOutput(2, 4) = 470

'Call array and paste
Range("b2").Resize(2, 4) = FinalOutput

End Sub


Hope it works.

Regards,

Noor Faiz
 
G

Guest

Thanks Noor.
Your code works.

Noor Faiz said:
Hi Pradip,

Maybe you can use my code:

Sub TestMyArray()

'Declare array
'But, remember to start it from 1
'So, do not start it from 0

Dim FinalOutput(1 To 2, 1 To 4) As Integer

FinalOutput(1, 1) = 100
FinalOutput(1, 2) = 200
FinalOutput(1, 3) = 300
FinalOutput(1, 4) = 400
FinalOutput(2, 1) = 170
FinalOutput(2, 2) = 270
FinalOutput(2, 3) = 370
FinalOutput(2, 4) = 470

'Call array and paste
Range("b2").Resize(2, 4) = FinalOutput

End Sub


Hope it works.

Regards,

Noor Faiz
 
M

Mangesh

It gives me the runtime error: Method 'Range' of object '_WorkSheet' failed

- Mangesh
 
M

Mangesh

Sorry, my mistake.
I didn't see the Sheet2, and tried on sheet1. Your code works perfectly
fine.

Mangesh
 

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