MMULT,矩阵乘积没问题

这个函数的作用是返回两个数组的矩阵乘积。

啥是数组?咱们可以理解为一组数。

哪啥是矩阵呢,就是有数据的矩形单元格区域,例如下面这两个长方形或是正方形的区域:

这个函数的参数很简单:

MMULT(数组1,数组2)

两个数组在计算时,要求数组1的行数与数组2的列数相同,或者数组1的列数与数组2的行数相同。

比如下图中,左侧部分的两个数组因为列数与行数符合要求,就可以当成MMULT函数的两个参数进行计算,而右侧的两个数组则因为列数与行数不符合要求,就不能使用MMULT函数进行运算了。

函数结果会得到一个新的矩阵,这个矩阵的行数与 数组1 的行数相同,列数与 数组2 的列数相同。

上图中蓝色区域的公式结果看起来有点乱,其实就是用垂直方向的这个数组中的每个元素与水平方向数组中的每个元素对应相乘。

光看这些解释,很多小伙伴肯定会觉得这样太抽象了,下面咱们就来点具体的,用几个简单实例,来说说MMULT函数的基本用法。

1、计算综合成绩

如下图所示,每个同学有笔试和面试两项成绩,其中笔试成绩占比为60%,面试成绩占比为40%,现在需要计算综合成绩:

D2单元格输入以下公式,下拉。

    =MMULT(B2:C2,G$2:G$3)

    公式的意思是使用水平方向的数组B2:C2,与垂直方向的数组G$2:G$3执行乘法计算,计算过程是:

    =88(笔试成绩)*60%(笔试占比)+90(面试成绩)*40%(面试占比)

    公式中的数组1(B2:C2)是一行,而数组2(G$2:G$3)是一列,所以最终得到一个数组结果,这个数组的大小只有一行一列。

    2、计算商品金额

    如下图所示,第一行和第二行分别是商品单价和商品名称,在底部区域则是不同客户购买各个商品的数量。

    需要在K列计算每个客户的应付金额。

    如果在K2使用MMULT函数直接将数组1参数设置为表示数量的B3:J3,将数组2参数设置为表示单价的B1:J1,公式会返回错误值。

    这是因为两个数组都是9列1行,数组1的行数(1)与数组2的列数(9)不同,并且数组1的列数(9)与数组2的行数(1)也不同。

    怎么办呢?咱们可以在公式中嵌套TRANSPOSE函数,将其中一个数组的行列方向进行转置互换。

      =MMULT(B3:J3,TRANSPOSE(B$1:J$1))

      K2输入上述公式后,结果仍然是错误值,为什么呢?

      这是因为数组1(B3:J3)中包含空白单元格了。

      咱们将公式继续修改一下,在有空白单元格的数组1后面乘以1,这样一来,空白单元格变成了0,再计算就没有问题了:

        =MMULT(B3:J3*1,TRANSPOSE(B$1:J$1))

        熟悉函数公式的小伙伴可能早看出来了,上面的两个例子其实都可以使用SUMPRODUCT函数来完成,咱们就是为了让大家熟悉一下这个函数的基础用法。

        下面再来说一个使用其他函数不太容易实现的问题。

        3、餐费分摊

        如下图所示,是某单位国庆值班人员的用餐记录。

        F列是不同日期的餐费金额,B2:E7单元格区域是员工的进餐情况,1表示当日进餐次数为1,2表示当日进餐次数为2,空白表示当日没有进餐。

        需要在B8:E8单元格区域中,根据每日的进餐人数和餐费,计算每个人应分摊的餐费金额。

        计算方法为当日餐费除以当日进餐总次数,如1日餐费为54元,进餐次数为2+1+3,则张三分摊金额为54/(2+1+3)*2 即18元。

        在计算张三总的分摊金额时,需要先计算出每一天的用餐总次数,然后用每一天的餐费除以每一天的用餐总次数,最后再乘以张三在每天的用餐次数,得到张三每天的分摊餐费,最后相加即可。

        B8单元格输入以下数组公式,按<Ctrl+Shift+Enter>组合键结束编辑,然后向右复制到E8单元格。

          =SUM($F2:$F7/MMULT($B2:$E7*1,1^ROW(1:4))*B2:B7)

          由于$B2:$E7单元格区域中存在空白单元格,直接使用MMULT函数时将返回错误值,因此先乘以1将区域中的空白单元格转换为0。

          1^ROW(1:4)部分,返回4行1列的内存数组{1;1;1;1},结果用作MMULT函数的数组2参数。(因为数据范围有四列,所以使用ROW(1:4),实际应用时可将4修改成实际的数据列数)

          MMULT($B2:$E7*1,1^ROW(1:4))部分,依次计算每一行的矩阵相乘之和,返回内存数组结果为:

          {6;7;6;3;4;7}

          结果就是$B2:$E7单元格区域中每一行的总和,即每日进餐的总次数。

          然后使用$F2:$F7单元格区域的每日餐费,除以MMULT函数得到的每日进餐总次数,得到在不同日期内的每次进餐应分摊金额。

          再乘以B2:B7单元格区域中每天的个人进餐次数,得到张三每天的应分摊金额为:

          {18;6;27.5;0;48;42.85}

          最后使用SUM函数求和,得到应分摊餐费总额。

          好了,今天咱们分享的内容就是这些吧,祝大家一天好心情!

          图文制作:祝洪忠

          (0)

          相关推荐

          • 按指定次数重复内容的套路合集

            -套路合集- 按指定次数重复内容 1.vlookup精确查找(4参为0) 如下图所示,B列的是要重复的内容,C列是要重复的次数,最后想要的效果是E列那样.A重复2次,B重复3次...... 首先在A列 ...

          • 初识矩阵乘积函数mmult的原理和基本用法

            小伙伴们过年好!祝大家在新的一年里健康,平安,自在,百毒不侵.那我们今天也来学习一个新函数的用法,那就是mmult.在官方的解释中,它是返回两个数组的矩阵乘积,实际上乘积之后还要求和,可以看作sump ...

          • 掌握了MMULT函数,你就拿到了打开通往函数至高境界大门的钥匙

            送人玫瑰,手有余香,请将文章分享给更多朋友 动手操作是熟练掌握EXCEL的最快捷途径! MMULT函数对于初学者来讲是一个比较陌生的函数,但不代表它默默无闻.函数发烧友对它趋之若鹜.今天我就来带大家一 ...

          • mmult真有用,计算餐费分摊金额

            下图A2:G9是数据源,记录的是7天内某宿舍5位成员的进餐记录和所花的餐费.5位成员分别是甲.乙.丙.丁和戊.通常是好几个成员组团进餐,然后餐费平摊. 如果当日有进餐用1表示,未进餐用空白表示.B列的 ...

          • 矩阵乘积函数mmult基础应用1:条件求和

            小伙伴们好,今天继续来学习一下mmult的基础用法.先从最简单的求和开始,然后再到条件求和.不知道大家对于mmult的规则了解了多少,还是先来复习一下它的规则.第1参数的列数要和第2参数的行数相同,结 ...

          • 矩阵乘积函数mmult进阶应用8:像if({1,0})一样置换2列数据

            小伙伴们,还好吗?今天来分享一下mmult的另一个用法,像if({1,0},..,..)一样置换两列数据的位置,置换后可以用vlookup实现逆向查询.还是来看2个例子. 1.置换2列数值,并用vlo ...

          • 矩阵乘积函数mmult进阶应用7:条件计数

            小伙伴们,大家好.今天继续来说mmult在条件计数中的应用,还是来看两个例子. 1.计算晚点次数(抵达时间大于预计时间) 下图是一个时刻表,记录的是预计到达时间和实际到达时间.现在的问题是求出晚点的次 ...

          • 矩阵乘积函数mmult应用6:条件计数

            小伙伴们,大家好.现在是特殊时期,希望大家做好防护措施,尽量不外出,更不要聚集,在家也可以找一些事情做,比如看电视,或做一顿好吃的,再不行学一下excel .言归正传,今天来学习下mmult在条件计数 ...

          • 矩阵乘积函数mmult进阶应用5:累加求和

            小伙伴们,大家好.今天继续来说mmult的累加应用,这次的题目是按指定次数重复内容.有关这个问题,我们之前也说过很多方法,今天来详细说说mmult的方法. 先来看看数据源和最后的效果.下图左表是数据源 ...

          • 矩阵乘积函数mmult进阶应用4:累加求和

            小伙伴们好,不知道mmult有没有让你感觉很晕,反正我是有点晕了.咱们接着昨天的问题继续深入,准备好了吗? 1.计算甲原料在哪个仓库的库存量先达到30,并确定是在哪一天达到此库存量.(增加了原料) 在 ...

          • 矩阵乘积函数mmult应用3:累加求和

            小伙伴们,大家好.今天来说下mmult的累加求和,累加求和的用处也是挺大的.下面看几个例子吧. 1.计算每天的库存量 下图是一个入库记录表,现在要计算每天的库存量,库存量的计算方法是当天的入库量加上之 ...

          • 矩阵乘积函数mmult基础应用2:条件求和

            小伙伴们,大家好.昨天说了mmult的条件求和用法.今天继续来说下条件求和的应用,加强一下对mmult的理解. 1.对每个人大于80分的成绩求和 这是个单条件求和的问题,方法有很多,比如sum,sum ...