Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 6
Default How can I sum two arrays together?

Hi all, I'm using Excel 2003.

Is there a way to quickly sum two arrays together in VBA, so that

Array3(r,c)=Array1(r,c)+Array2(r,c) ?

where r = row number, c = column number, Array1 and Array2 are the
input arrays and Array3 is the output of the calculation

I searched this and other forums, and tried several things, but the
only solution I found was to write a function which loops through all
the items one by one. It works, but it's pretty slow and I was hoping
for a faster solution, as I have to run this on a rather large file.

In Matlab and other environments it's as easy as writing

Array3 = Array1 + Array2

Is there really no equivalent in VBA? :(

Thanks!
  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 86
Default How can I sum two arrays together?

On 10/19/2010 8:52 AM, SantaClaus wrote:
Hi all, I'm using Excel 2003.

Is there a way to quickly sum two arrays together in VBA, so that

Array3(r,c)=Array1(r,c)+Array2(r,c) ?

where r = row number, c = column number, Array1 and Array2 are the
input arrays and Array3 is the output of the calculation

I searched this and other forums, and tried several things, but the
only solution I found was to write a function which loops through all
the items one by one. It works, but it's pretty slow and I was hoping
for a faster solution, as I have to run this on a rather large file.

In Matlab and other environments it's as easy as writing

Array3 = Array1 + Array2

Is there really no equivalent in VBA? :(

Thanks!


How many elements are in your arrays, and how long does it take to sum
them?
  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 6
Default How can I sum two arrays together?

On Oct 22, 4:53*am, Mike S wrote:
On 10/19/2010 8:52 AM, SantaClaus wrote:





Hi all, I'm using Excel 2003.


Is there a way to quickly sum two arrays together in VBA, so that


Array3(r,c)=Array1(r,c)+Array2(r,c) *?


where r = row number, c = column number, Array1 and Array2 are the
input arrays and Array3 is the output of the calculation


I searched this and other forums, and tried several things, but the
only solution I found was to write a function which loops through all
the items one by one. It works, but it's pretty slow and I was hoping
for a faster solution, as I have to run this on a rather large file.


In Matlab and other environments it's as easy as writing


Array3 = Array1 + Array2


Is there really no equivalent in VBA? :(


Thanks!


How many elements are in your arrays, and how long does it take to sum
them?- Hide quoted text -

- Show quoted text -


My array is ca. 16,000 x 600 but may grow bigger.
On a fast PC, the whole script takes ca. 4 minutes to run. This is
still aceptable, but:
1) I'd like a faster way because the array will grow bigger and bigger
2) I'd like a cleaner and neater way to write my code, although I'm
not sure this is even possible - VBA is not Matlab!

Thanks
  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 4
Default How can I sum two arrays together?

On 10/29/2010 01:54 AM, SantaClaus wrote:
On Oct 22, 4:53 am, Mike wrote:
On 10/19/2010 8:52 AM, SantaClaus wrote:





Hi all, I'm using Excel 2003.


Is there a way to quickly sum two arrays together in VBA, so that


Array3(r,c)=Array1(r,c)+Array2(r,c) ?


where r = row number, c = column number, Array1 and Array2 are the
input arrays and Array3 is the output of the calculation


I searched this and other forums, and tried several things, but the
only solution I found was to write a function which loops through all
the items one by one. It works, but it's pretty slow and I was hoping
for a faster solution, as I have to run this on a rather large file.


In Matlab and other environments it's as easy as writing


Array3 = Array1 + Array2


Is there really no equivalent in VBA? :(


Thanks!


How many elements are in your arrays, and how long does it take to sum
them?- Hide quoted text -

- Show quoted text -


My array is ca. 16,000 x 600 but may grow bigger.
On a fast PC, the whole script takes ca. 4 minutes to run. This is
still aceptable, but:
1) I'd like a faster way because the array will grow bigger and bigger
2) I'd like a cleaner and neater way to write my code, although I'm
not sure this is even possible - VBA is not Matlab!


Do I understand you correctly that one array is this big:
Dim Array1 (16000, 600)

If so can I ask what the data is, just out of curiosity?

As far as possible solutions, is it feasible to store the summed Array3
in a file? I'm thinking that would be a lot faster than the 4 minutes
you're seeing now.


  #5   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 230
Default How can I sum two arrays together?

On 29/10/2010 09:54, SantaClaus wrote:
On Oct 22, 4:53 am, Mike wrote:
On 10/19/2010 8:52 AM, SantaClaus wrote:

Hi all, I'm using Excel 2003.


Is there a way to quickly sum two arrays together in VBA, so that


Array3(r,c)=Array1(r,c)+Array2(r,c) ?


where r = row number, c = column number, Array1 and Array2 are the
input arrays and Array3 is the output of the calculation


I searched this and other forums, and tried several things, but the
only solution I found was to write a function which loops through all
the items one by one. It works, but it's pretty slow and I was hoping
for a faster solution, as I have to run this on a rather large file.


In Matlab and other environments it's as easy as writing


Array3 = Array1 + Array2


Is there really no equivalent in VBA? :(


No. If you need to do it a lot you could write a subroutine to do
Sub MatrixAdd(Array3, Array1, Array2)

Though you may be able to add a few go-faster stripes and gain some
speed by explicitly declaring the types of your variables. Otherwise XL
has to determine the type of each variable at runtime (high overheads).

Dim r & c as Integer and the Arrays presumably as Double or Integer.
There is some extra mileage in arranging things so that you sweep
linearly through consecutive memory locations inside the loop, and also
put the nest them with the small dimension as the outer loop.

Thanks!


How many elements are in your arrays, and how long does it take to sum
them?- Hide quoted text -

- Show quoted text -


My array is ca. 16,000 x 600 but may grow bigger.
On a fast PC, the whole script takes ca. 4 minutes to run. This is
still aceptable, but:
1) I'd like a faster way because the array will grow bigger and bigger
2) I'd like a cleaner and neater way to write my code, although I'm
not sure this is even possible - VBA is not Matlab!


You might be better off doing this in Visual Basic itself (or C). These
array sizes must be pushing what VBA can sensibly handle in XL2003.

Regards,
Martin Brown
Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
Trouble with arrays (transferring values between two arrays) Keith R[_2_] Excel Programming 4 November 14th 07 12:00 AM
Use of arrays DKS Excel Worksheet Functions 0 November 30th 06 04:11 PM
Working with ranges in arrays... or an introduction to arrays Glen Excel Programming 5 September 10th 06 08:32 AM
Arrays - declaration, adding values to arrays and calculation Maxi[_2_] Excel Programming 1 August 17th 06 04:13 PM
Arrays Ken Rock Excel Programming 3 November 17th 05 11:42 AM


All times are GMT +1. The time now is 06:22 PM.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright ©2004-2024 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"