Matrix multiplication of more than 73 X 73 entities in VBA

T

Thulasiram

Hello all,

I interpret that Excel can handle matrix multiplication of "maximum" 73
x 73 entities in one sheet with 73 x 73 entities in another sheet. Is
this correct?

If yes, what could be the VBA code to perform matrix multiplication of
on M x N entities in one sheet with N x P entites in another matrix?
(where M, N and P are greater than 73)

Please help.

Thanks,
Thulasiram.
 
T

Tom Ogilvy

Here would be the basic approach. You can add more error checking:

Function MyMMULT(rngA As Range, rngB As Range)
Dim ArrC() As Double
If rngA.Rows.Count <> rngB.Columns.Count Then
MyMMULT = CVErr(xlErrRef)
Exit Function
End If
ReDim ArrC(1 To rngA.Rows.Count, 1 To rngB.Columns.Count)
For i = 1 To rngA.Rows.Count
For j = 1 To rngB.Columns.Count
For k = 1 To rngA.Columns.Count
ArrC(i, j) = ArrC(i, j) + rngA(i, k) * rngB(k, j)
Next k
Next j
Next i
MyMMULT = ArrC
End Function
 
A

Alan Beban

Should the 3rd line be

If rngA.Columns.Count <> rngB.Rows.Count Then ?

Alan Beban
 
T

Thulasiram

Dear Tom Ogilvy,

I multiplied 2x2 matrix with 2x2 matrix and the mymmult function worked
perfect.

BUT, i multiplied 13 x 15 matrix with 15 x 20 matrix.

formula written in the cell A1 of sheet 3 is given below. then
corresponding cells are selcted, pressed F2 followed with Ctrl + Shift
+ Enter

=MMULT(Sheet1!A1:O13,Sheet2!A1:T15) -------> Gives the result

=mymmult(Sheet1!A1:O13,Sheet2!A1:T15) --------> Gives an error #REF!

I also cross-checked by multiplying the matrices (13 x 15 with 15 x 20)
in the same sheet rather in sheet 1 and 2. Still the same error # REF!
exists.

Please help me in this aspect.

Thanks,
Thulasiram.
 
T

Thulasiram

Alan,

I had a look at both of Tom's reply in this thread and implemented in
the VBA code. Still I get the error. That is the explanation I gave in
my last mail too.

Please help.

Thanks,
Thulasiram
 
T

Thulasiram

Alan and Tom,

I got the function working for multiplying 13 x 15 with 15 x
20!!!!!!!!!!

It was my mistake that i considered only 'a part' of Tom's 8:26pm post.
Thanks to Alan for notifying it.

Thanks again,
Thulasiram
 

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