MM函数来了
函数较难理解,小编尝试尽量讲解的简单一些,能领悟多少,各看本事啦
这里是【易办公 早下班】的 Excel办公实战
正片开始:
先来看看官方的说明,可能看不懂,但是可以给我们一起启发
官方说明:
语法:MMULT(array1, array2)
用途:MMULT函数返回两个数组的矩阵乘积。结果矩阵的行数与 array1 的行数相同,矩阵的列数与 array2 的列数相同
参数:
看完官方说明,有何感受,一脸懵逼属于正常现象!
正好看不懂,今天就到这里,完结……
开个玩笑,我们不就是看不懂才学的吗?我们继续……
说说直观能懂的:
(矩阵什么的就不说了,有兴趣的可以拿起你手边的线性代数看上一看)
除了第四点,其他字面理解即可,第四点是MM函数的灵魂,也是大家学不会的原因,要求感觉有点苛刻。
通过一个图,我们直观的看一下,说的什么意思
第四点其实总结来说就是一点,那就是array1和array2放一起,由array1中的列数和array2中的行数所形成的区域必然是一个正方形(array1中的列数与 array2中的行数相同),以后我们构建都需要遵循!
记住和理解以上这个图,基本我们就掌握了参数的构建奥义,足够了!
掌握了参数构建才是第一步,下面就来说说计算原理,矩阵相乘
接上图,结果区域如下,可见结果区域等于array1的行和array2的列数
怎么计算呢?先放一放手中的线性代数,你可能已经忘光了,我们直接来看即可
下面我喜欢叫“落袋法”,像是一个一个弹珠落到袋子中
先看一下公式和结果:简单提示一下应该就能看出
32=1*10+2*11
53=2*10+3*11
95=4*11+5*11
对应相乘,然后落到对应的位置
以上其实就是MM函数的全部原理的,下面进入实战案例进一步说明和巩固!
最最简单和常见的应用就是累加,所以我们第一个案例就是他了
主要在参数的构建上,后面大家会感觉到
案例1、累加得到内存数组
公式:=MMULT(N(ROW($1:$12)>=COLUMN($A:$L)),$B$2:$B$13)
看上去有点难,稍微按照所学分解一下
难点在第一参数的构建:=N(ROW($1:$12)>=COLUMN($A:$L))
形成12*12 的正方形,0和1组成的对称三角形
有人说你怎么想到,我怎么想不到呀,其实我们是根据结果和已经出现的参数有推到的,结果是1列12行、已知一参数只是12行1列,那么需要提供的就是12*12的区域。同时要对应相乘相加,那么就需要1依次递增的数据。
爱吐槽的小伙伴正在赶来,那么就是一顿操作
"SUM下拉累加他不香吗?"
我的回应是:“奥”
话说回来,其实还真有点不同的用处,因为MM函数结果是内存数组
F9可见
既然是内存数组,我们就可以配合很多函数,完成一些其他需求
案例2:累计销售达到300最接近的月份
接案例1,最接近300应该是7月的288,那么我们只要配合LOOKUP即可一次性完成,一步到位
LOOKUP要求第二参数是升序,这里累加,必然复合,返回小于等于查询值的最大值。
公式:=LOOKUP(300,MMULT(N(ROW($1:$12)>=COLUMN($A:$L)),$B$2:$B$13),A2:A13)
既然是入门篇,我们就不再举更多案例,好好消化上面两个,彻底搞懂,对你入门将有很大好处!