How to use the MMULT function
The MMULT function calculatesĀ the matrix product of two arrays, an array as the same number of rows as array1 and columns as array2.
Table of Contents
-
- MMULT Function Syntax
- MMULT Function Arguments
- Spilled array - Excel 365
- Cell ranges with an equal number of rows and columns
- Cell ranges with different number of rows and columns, ex 1
- Cell ranges with different numbers of rows and columns, ex 2
- Calculate totals row-wise
- Calculate totals column-wise
- Get Excel *.xlsx file
1. MMULT Function Syntax
MMULT(array1, array2)
2. MMULT Function Arguments
array1 | Required. The first array of numbers you want to multiply. |
array2 | Required. The second array of numbers you want to multiply. |
Comments
This function must be entered as an array formula.
3. Spilled array
Microsoft Excel has recently released an update to Excel 365 subscribers which allows you to use a new feature called dynamic array that replaces a regular array formula.
The image above shows the MMULT function in cell B12, however, it has been entered as a regular formula. Excel "knows" that it returns multiple values and automatically expands the range.
This is called "spilled array behavior" meaning the formula expands across cells automatically in order to show all values.
There is a blue border around the values from a spilled array but it will disappear as soon as you press with left mouse button on a cell outside the blue border. It reappears again if you press with left mouse button on any cell in the spilled array.
The following examples demonstrate how the function works.
4. Cell ranges with an equal number of rows and columns
Array1 (B2:C3) has 2 rows and array2 (E2:F3) has 2 columns, the returning array has 2 rows and 2 columns. Cell range B2:C3 and E2:F3 show the cell labels.
Cell range H2:I3 shows the calculations for each value in the array using the labels in B2:C3 and E2:F3.
Array formula in cell range L8:M9:
Cell L8: a11*b11+a12*b21 becomes 0*0+1*1 and returns 1.
Cell L9: a21*b11+a22*b21 becomes 1*0+0*1 and returns 0.
Cell M8: a11*b12+a12*b22 becomes 0*1+1*0 and returns 0.
Cell M9: a21*b12+a22*b22 becomes 1*1+0*0 and returns 1.
5. Cell ranges with different numbers of rows and columns, example 1
Array1 (B2:C4) hasĀ 3Ā rows and array2 (E2:G3) hasĀ 3Ā columns, the returning array hasĀ 3Ā rows andĀ 3Ā columns.
Array formula in cell range L8:M9:
Cell M8:Ā aāā*bāā+aāā*bāā becomesĀ 0*1+1*4 and returns 4
Cell M9:Ā aāā*bāā+aāā*bāā becomesĀ -4*1+0*4 and returns -4
Cell M10:Ā aāā*bāā+aāā*bāā becomesĀ 3*1+1*4 and returns 7
Cell N8:Ā aāā*bāā+aāā*bāā becomesĀ 0*2+1*-5 and returns -5
Cell N9:Ā aāā*bāā+aāā*bāā becomesĀ -4*2+0*-5 and returns -8
Cell N10:Ā aāā*bāā+aāā*bāā becomesĀ 3*2+1*-5 and returns 1
Cell O8:Ā aāā*bāā+aāā*bāā becomesĀ 0*3+1*-6 and returns -6
Cell O9:Ā aāā*bāā+aāā*bāā becomesĀ -4*3+0*-6 and returns -12
Cell O10:Ā aāā*bāā+aāā*bāā becomesĀ 3*3+1*-6 and returns 3
This article shows you how to find a set of numbers that adds up to a sum you specify:
Recommended articles
Excelxor is such a great website for inspiration, I am really impressed by this post Which numbers add up to […]
6. Cell ranges with different numbers of rows and columns, example 2
Array1 (B2:D3) hasĀ 2Ā rows and array2 (F2:G4) hasĀ 2Ā columns, the returning array hasĀ 2Ā rows andĀ 2Ā columns.
Array formula in cell range L8:M9:
=MMULT(B8:D9,F8:G10)
Cell L8:Ā aāā*bāā+aāā*bāā+aāā*bāā becomesĀ 1*0+2*-4+3*3 and returns 1
Cell L9:Ā aāā*bāā+aāā*bāā+aāā*bāā becomesĀ 4*0+-5*-4+-6*3 and returns 2
Cell M8:Ā aāā*bāā+aāā*bāā+aāā*bāā becomesĀ 1*1+2*0+3*1 and returns 4
Cell M9:Ā aāā*bāā+aāā*bāā+aāā*bāā becomesĀ 4*1+-5*0+-6*1 and returns -2
7. Calculate totals row-wise
The image above demonstrates an array formula that returns an array containing the totals from each row in cell range C3:E7.
The number of columns in the first cell range or array must be equal to the number of rows in the second cell range or array.
Cell range C3:E7 has 3 columns and array {1; 1; 1} has three rows. The resulting array has the same number of rows as the cell range and the same number of columns as the array, in this case the array has 5 rows and 1 column. To be able to add all numbers in I use value 1 in the array.
You can also create an array that grows automatically based on the cell range, named range or an Excel defined Table.
This formula demonstrates how to create the array in the second argument using a cell range:
Let me explain this formula, the COLUMN function returns the corresponding column numbers from a cell range.
COLUMN(C3:E7) returns {3, 4, 5}.
COLUMN(C3:E7)^0
becomes
{3, 4, 5}^0
and returns {1, 1, 1}. Any number (except zero) to the power of 0 (zero) returns 1. This array has values distributed across columns, we need them transposed row-wise.
TRANSPOSE(COLUMN(C3:E7)^0)
becomes
TRANSPOSE({1, 1, 1}) and returns {1; 1; 1}.
This formula demonstrates how to create the array using a named range:
This formula demonstrates how to create the array using a reference to an Excel Table:
If you are an Excel 365 subscriber you can use the newly added SEQUENCE function:
This post demonstrates how to refresh a scoreboard instantly using the MMULT function:
Recommended articles
This article demonstrates a scoreboard, displayed to the left, that sorts contestants based on total scores and refreshes instantly each […]
8. Calculate totals column-wise
This formula adds numbers and returns sums for each column in one calculation.
This article demonstrates how to search a data set with multiple strings using the MMULT function:
Recommended articles
RU asks: Can you please suggest if i want to find out the rows with fixed value in "First Name" […]
Useful resources
MMULT function - Microsoft
MMULT in Excel
'MMULT' function examples
The array formula in cell F3 counts cells in column B that contains at least one of the values in […]
This article describes a formula that counts values in two columns if they are duplicates on the same row. What's […]
This post demonstrates a formula in cell D16 that counts overlapping dates across multiple date ranges. The date ranges are […]
Functions in 'Math and trigonometry' category
The MMULT function function is one of many functions in the 'Math and trigonometry' category.
Excel function categories
Excel categories
4 Responses to “How to use the MMULT function”
Leave a Reply
How to comment
How to add a formula to your comment
<code>Insert your formula here.</code>
Convert less than and larger than signs
Use html character entities instead of less than and larger than signs.
< becomes < and > becomes >
How to add VBA code to your comment
[vb 1="vbnet" language=","]
Put your VBA code here.
[/vb]
How to add a picture to your comment:
Upload picture to postimage.org or imgur
Paste image link to your comment.
A great write-up as usual Oscar. Do you have any use cases to share? In 10 years of using Excel I can only think of one time where it occurred to me to use MMULT, and I can't put my finger on it now.
Hi Oscar,
Thanks for taking the request..
@ Andy.. & @Oscar
In addition.. to the previous discussion.. :)
Check the attached file.. there are few sample use of MMULT..
https://dl.dropboxusercontent.com/u/78831150/Excel/Sample%20use%20of%20MMULT.xlsx
https://dl.dropboxusercontent.com/u/78831150/Excel/Sample%20use%20of%20MMULT.jpg
https://postimg.org/image/tn0pfedvl/
Regards,
Deb
Andy,
Thank you. I have no examples to share, yet. I searched excelforum.com and found a few posts but nothing really sensational.
I googled "use of matrix multiplication" and found some practical examples in math and physics.
Deb,
Thank you for your contribution!
Formula #1
=SUM(MMULT(B2:C15;{1;-1}))
MMULT(B2:C15;{1;-1}) returns {29; 77; -1; 27; 69; 3; -3; 32; 54; -67; -65; -46; 21; -67}
equivalent to =B2:B15-C2:C15
So this formula does the same thing: =SUM(B2:B15-C2:C15)
Formula #2
=SUM(MMULT(B2:C15;{1;1})) sums of all values in B2:C15.
It is equivalent to this formula =SUM(B2:C15)
Good examples, I am beginning to understand. But I want to do someting creative and unique with the MMULT function, something that is not possible with other function or at least complicated to accomplish.
Thanks again for sharing!
[…] Mmult function […]