打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

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

小伙伴们好,今天继续来学习一下mmult的基础用法。先从最简单的求和开始,然后再到条件求和。不知道大家对于mmult的规则了解了多少,还是先来复习一下它的规则。第1参数的列数要和第2参数的行数相同,结果区域的行数与第1参数的行数相同,结果区域的列数与第2参数的列数相同。2个参数中的元素必须都是数字,mmult返回的结果是数组。

可以想一下昨天的矩形图,第1参数放在左下角,第2参数放右上角,左上角的区域必须形成一个正方形,右下角的区域是mmult的结果区域。第1参数和第2参数的顺序不能互换。

下面看2张图片的对比。第1张图中,mmult的第1参数是橙色部分,第2参数是蓝色部分,返回的结果是绿色部分。第2张图中,mmult的第1参数是蓝色部分,第2参数是橙色部分,返回的结果是绿色部分。可以看出,当2个参数的顺序对调后,返回的结果天差地别,看绿色区域的大小就知道了。虽然2个参数的内容看起来是相同的,都是1,2,3,4,5,但由于方向的不同,返回的结果完全不同。

下面来看2个简单的例子。

1.按姓名和科目分别求总分。

下图是一张成绩表,求每个人的总分和各科的总分。对于这个问题,我相信大家会说这太简单了,一个sum就搞定了。没错,就是这么简单。但是我们要学习mmult的用法,就从简单的问题开始。咱们先看每个人的总分是怎么求出来的,也就是E列的绿色部分。

我们可以从结果区域的大小来倒推第1参数和第2参数的位置,结果的区域E4:E7是4行1列,成绩的区域B4:D7是4行3列,它的行数和结果区域的行数相同,列数和结果区域的列数不同,所以它只能是第1参数。那么我们也可以推测第2参数只有1列,并且它的行数与第1参数的列数相同。这样我们就可以画矩形图了,如下图右侧所示。

虽然矩形图画好了,但第2参数的内容还没有确定,怎么样可以知道第2参数是什么呢?其实还可以从结果倒退,因为总分是3科成绩相加,比如125=28+5+92,那么28*1+5*1+92*1是不是还是等于125。所以第2参数是{1;1;1},注意这里数组的元素用分号分隔,因为现在它是纵向的。

所以函数公式如下图所示,首先选中E4:E7,输入公式=MMULT(B4:D7,{1;1;1}),按ctrl+shift+enter三键结束,因为现在是在多单元格中输出结果。你可以再看下右侧的矩形图,看看它的计算过程。

接下来看下每科的总分是怎么算出来的,也就是橙色的区域B8:D8。你也可以自己先想一下。同样还是按之前的思路,结果区域是1行3列,成绩的区域是4行3列,所以它只能是第2参数。我们也可以推测第1参数只有1行4列,并且结果是{1,1,1,1}。然后就可以画矩形图了,如下图所示。同样选中B8:D8,输入公式=MMULT({1,1,1,1},B4:D7),多单元格输出结果,按三键结束。

mmult经常与{1;1;1;1}或{1,1,1,1,1}这样的数组结合使用,下图就是构建了一个二维数组。第2参数就是4个1组成的横向数组。数据量小的话,我们就可以像上面那样输入常量数组;但是如果数据量多的话,比如需要100个1组成的数组,那我们不可能写100次。这时就会用到row(1:100)^0column(a:aa)^0这样的写法。row(1:100)是1到100的纵向数组,0次方就返回100个1。column也是一样的意思,由于column不好看到列数,所以也会用到transpose(row(1:100)^0)transpose(row(1:100))^0的写法。

2.求部门为销售部,性别为男的工资总和。

如下图所示,是一个多条件求和的问题。我们知道多条件求和可以用sum,sumifs,sumproduct等,其实也可以用mmult,我们先来说一下常用的公式。sumifs的公式为=SUMIFS(D13:D22,B13:B22,"销售部",C13:C22,"男")

sumproduct的公式为=SUMPRODUCT((B13:B22="销售部")*(C13:C22="男")*D13:D22)。也就是部门的区域等于销售部乘以性别的区域等于男再乘以工资,多条件与的关系用乘号。

如下图所示,F列是判断B列部门的区域是否等于销售部,成立的返回true,不成立的返回false。G列是判断C列性别的区域是否为男,同样成立的返回true,否则返回false。H列是这2个条件判断的结果相乘,2者同时成立的返回1,否则返回0。这样就找到符合条件的了,然后用H列的结果再乘以D列的工资,最后求和就得到了总工资。

为什么sumproduct的用法要说的这么细,因为它和mmult的用法比较接近。下图F列是三部分的乘积,之前是用sumproduct求和,现在用mmult来求和。由于求和的结果只有1个值,所以三部分相乘的结果只能作为mmult的第2参数,那么第1参数只能有1行,列数和第2参数的行数相同。可以画右侧的矩形图。由于这里第1参数中的1比较多,所以我用TRANSPOSE(ROW(13:22)^0)来构建。所以最后的公式为=MMULT(TRANSPOSE(ROW(B13:B22)^0),(B13:B22="销售部")*(C13:C22="男")*D13:D22),按ctrl+shift+enter三键结束。

除了上面的公式,还可以有多种写法,你自己可以组织搭配,但一定要符合mmult的矩形图规则。我这里给出2种作为参考。

第1种=MMULT(TRANSPOSE(D13:D22),(B13:B22="销售部")*(C13:C22="男")),按三键结束。

第2种=MMULT(TRANSPOSE((B13:B22="销售部")*D13:D22),N(C13:C22="男")),按三键结束。

文件链接:
https://pan.baidu.com/s/1txH7WTbmZrgMwdHsTNhgKg
提取码:es6j
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
【新提醒】Excel 【原创】浅析多种方法实现rank排序效果
TRANSPOSE函数用法及实例介绍
Excel [分享]从头细说MMULT
Excel矩阵函数mmult教程
Vlookup第1参数数组用法
透过实例初识Excel mmult函数
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服