MMULT Function
Excel functions like XLOOKUP and MATCH lack the ability to look up values in multiple rows or columns. However, this problem is circumvented with the help of MMULT, which returns the matrix product of two arrays.
Before diving into the main example, let’s first understand how MMULT works (page 1).
The syntax is:
MMULT (array1, array2)
• array1
— the first array to multiply
• array2
— the second array to multiply
The rules of MMULT are:
• only numbers are permitted in each array
• the number of columns in array1
must match the number of rows in array2
The matrix product returned will consist of the same number of rows as array1
, and the same number of columns as array2
.
At the top are two matrices: Matrix A and Matrix B. The MMULT Method multiplies array1
(Matrix A) by array2
(Matrix B) to generate a new array comprising two rows and four columns (2 x 4).
The Manual Method shows two examples of how you would do this without MMULT. It involves multiplying each row cell in Matrix A by each equivalent column cell in Matrix B.
Page 2 shows a table containing 2022 FIFA World Cup qualification groups. If you wanted to find which one England were in, you might be tempted to use a formula like:
=INDEX(A2:J2, , MATCH(J10, A3:J8, 0))
=XLOOKUP(J10, A3:J8, A2:J2)
However, neither would work.
Instead, XLOOKUP can be used in conjunction with MMULT, SEQUENCE and ROWS to return the desired result.
The three XLOOKUP arguments are:
1.
lookup_value
1 is the value to find.
2.
lookup_array
MMULT’s array1
argument utilises SEQUENCE and ROWS to construct a 1 x 6 array of 1 values to convert the number of team rows into columns (M15).
array2
then carries out a conditional check on the team data to find which value is equal to ‘England’ (M18). The result is a 6 x 10 array of zeros — except the matching value.
Multiplying the first array by the second means the calculation will be 1 x 0 or 1 x 1. As only the latter can equal 1, this matches the lookup_value
.
Put together, the result is a 1 x 10 array of Booleans with a solitary 1 in the column England is in (M26).
3.
return_array
Where the final value comes from, which is the range containing the group letters.
The formula culminates by returning group I in J11.