View Single Post
  #2   Report Post  
Posted to microsoft.public.excel.programming
Tom Ogilvy Tom Ogilvy is offline
external usenet poster
 
Posts: 27,285
Default Fast export large 2-dim array to worksheet

Dim aMatrix(10000,50) as Double

' code the populates the aMatrix

lb1 = lbound(aMatrix,1)
lb2 = lbound(aMatrix,2)
ub1 = ubound(aMatrix,1)
ub2 = ubound(aMatrix,2)
rws = ub1 - lb1 + 1
cols = ub2- lb2 + 1
Sheet1.Cells(1,1).Resize(rws,cols).Value = aMatrix

Obviously, if you know the number of rows and columns, you don't need to
calculate them as I have. However, without knowing option base, and you
didn't specify the lower bound, I provided a generalized approach. The key
bit is you can put it all down in one step.

--
Regards,
Tom Ogilvy



"aafraga" wrote in
message ...

Hello Excel Community,

For many years, I have been programming in EXCEL VBA and often use 2
dimensional arrays, usually of type Double of Variant. Normally, I
would declare the array such as :
Dim aMatrix(10000,50) as Double

Some math code would populate all the cells and I would then print the
aMatrix to a worksheet by nesting in a double loop:
for i...
for j...
Sheet1.Cells(i,j).Value = aMatrix(i,j)

The problem here is that Excel really slows down after a couple of
thousand.
Is there a fast way to bulk copy an array to a worksheet ?

I am looking for a function along the lines of
FastCopytoWorkSheet (aMatrix() as double, aRange as Range)
...

Is it best to just turn off screen updating or is there a more elegant
way ?
Many thanks and best regards,
Alberto


--
aafraga
------------------------------------------------------------------------
aafraga's Profile:

http://www.excelforum.com/member.php...o&userid=31314
View this thread: http://www.excelforum.com/showthread...hreadid=510013