掌握了MMULT函数,你就拿到了打开通往函数至高境界大门的钥匙https://zhuanlan.zhihu.com/p/369761809

MMULT函数对于初学者来讲是一个比较陌生的函数,但不代表它默默无闻。函数发烧友对它趋之若鹜。今天我就来带大家一同领略一下它的风采吧!
MMULT函数返回两数组的矩阵乘积,其语法构成为:
MMULT(array1,array2)
其中Array1、array2是要进行矩阵乘法运算的两个数组。函数结果(也是一个矩阵)的行数与 array1 的行数相同,矩阵的列数与 array2 的列数相同。

上图是简单的例子,方便大家理解“函数结果(也是一个矩阵)的行数与 array1 的行数相同,矩阵的列数与 array2 的列数相同”。
下面是一个简单的MMULT函数计算过程的例子。

接下来,我们就一起来看看MMULT函数都有哪些奇妙的功能吧!
01 按条件求和
下例中求单元格区域A1:E10中数值小于50的所有单元格之和。

在单元格G2中输入公式“=SUM(MMULT(($A$1:$E$10<50)*($A$1:$E$10),ROW(1:5)^0))”,三级回车即可。
思路:
- ($A$1:$E$10<50)*($A$1:$E$10)部分是满足条件的部分,它是一个10行5列组成的内存数组,构成了MMULT函数的第一个参数
- ROW(1:5)^0是常用的方法,是一个1列5行的内存数组
- MMULT()部分返回{12;58;83;151;87;35;45;42;0;59},即每一行的数值中小于50的总和
- 利用SUM函数加总
我们增加一点难度,求下面型号A的最大的一个月的产量。

在单元格E2中输入公式“=MAX(MMULT(TRANSPOSE(ROW($A$2:$A$25)^0),($B$2:$B$25="A")*($C$2:$C$25)*($A$2:$A$25=COLUMN(A:L))))”,三键回车即可。

思路:
- ($B$2:$B$25="A")*($C$2:$C$25)*($A$2:$A$25=COLUMN(A:L))部分的运算请看下表。

- TRANSPOSE(ROW($A$2:$A$25)^0)部分,创建了一个1行24列的内存数组。
- MMULT()部分返回的结果是{0,0,1441.14,0,214.7,0,0,974.59,0,0,0,1596.79},和上表的结果相吻合
- 利用MAX函数求得最大值
02 累计求和
求下表中每日库存的结余量。

选中单元格区域E2:E11,输入公式“=MMULT(N(ROW($1:$10)>=COLUMN(A:J)),$B$2:$B$11-$C$2:$C$11)”,三键回车即可。
思路:
- N(ROW($1:$10)>=COLUMN(A:J))运算结果如下。其中N函数将逻辑值TRUE转换为1,FALSE转换为0
- $B$2:$B$11-$C$2:$C$11部分,是用入库数量减去出库数量

- 利用MMULT函数求这两个矩阵的乘积,得到累计的库存量
03 按条件计数
下例中,我们要统计每个型号出现的次数,以及每个型号所对应的代码出现过的最大的数。

在单元格B2中输入公式“=MMULT(N($A$2:$A$11=TRANSPOSE($A$2:$A$11)),ROW($A$2:$A$11)^0)”,三键回车并向下拖曳即可。

思路:
- N($A$2:$A$11=TRANSPOSE($A$2:$A$11))部分运算的结果如下

- 利用MMULT函数即可算出各个型号出现的次数
下面来看看如何求得各个型号出现的最大次数。

在单元格F2中输入公式“=RIGHT(MAX(MMULT(N($C$2:$C$11=TRANSPOSE($C$2:$C$11)),N($A$2:$A$11=E2))*10+$C$2:$C$11))”,三键回车并向下拖曳即可。
思路:
- N($C$2:$C$11=TRANSPOSE($C$2:$C$11))计算结果如下

- 利用MMULT函数求出矩阵乘积
- 利用MAX函数和RIGHT函数求得最大值
04
最后,和大家分享一道小题目。
求任一五位数中,其各位数字两两相减的最大差值。如:13692,最大值为9-1=8;68057,最大值为8-0=8;37266,最大值为7-2=5…

在单元格B2中输入公式“=MAX(MMULT(LEFT(RIGHT(A2,{1;2;3;4;5}),1)*1,{1,1,1,1,1})-MMULT({1;1;1;1;1},LEFT(RIGHT(A2,{1,2,3,4,5}),1)*1))”,并向下拖曳即可。
小伙伴们,可以理解上面这个公式吗?有问题可以私聊我哦!
-END-
长按下方二维码关注EXCEL应用之家
面对EXCEL操作问题时不再迷茫无助



請先 登入 以發表留言。