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

小伙伴们,大家好。昨天说了mmult的条件求和用法。今天继续来说下条件求和的应用,加强一下对mmult的理解。
1.对每个人大于80分的成绩求和
这是个单条件求和的问题,方法有很多,比如sum,sumif等,咱们还是来学习mmult。选中H3:H7,输入公式=MMULT((B3:G7>80)*B3:G7,ROW(1:6)^0),按三键结束。
这里,我就不再详细解释了,大家可以结合下图自己理解。下图①部分就是mmult的第1参数(B3:G7>80)*B3:G7返回的结果,②部分是第2参数ROW(1:6)^0返回的结果,③构成一个正方形,④是返回的结果区域。
2.求产品A在几月份的销量最高,并且求出最高销量
下图是一个产品的销量表,求A产品在几月份的销量最高,并且求出对应的最高销量。如果不能一步到位,可以先用辅助列的方法,分别求出A产品在1-12月的销量,然后再求出最高销量和对应的月份。辅助列的公式我就不写了,大家可以自己写一下。
下面我先说一下用sumifs的解法,最高销量的公式为=MAX(SUMIFS(C11:C23,A11:A23,ROW(1:12),B11:B23,"A")),按三键结束。sumif的第3参数ROW(1:12)是一个内存数组,代表1-12个月份。这样的话sumifs返回的结果也是一个数组,分别是1-12月A产品的销量,最后用max求最大值。
对应月份的公式为=MOD(MAX(SUMIFS(C11:C23,A11:A23,ROW(1:12),B11:B23,"A")/1%+ROW(1:12)),100),按三键结束。用的是月份和销量的加权处理方式,也就是把销量和月份结合起来,用max取出最大值,最大值的后2个数字就是月份,用mod取出月份。
下面说下mmult的公式,销量的公式为=MAX(MMULT(TRANSPOSE(ROW(11:23)^0),(A11:A23=COLUMN(A:L))*(B11:B23="A")*C11:C23)),按三键结束。
先来看mmult的第2参数(A11:A23=COLUMN(A:L))*(B11:B23="A")*C11:C23),是3部分相乘。A11:A23=COLUMN(A:L)这部分是用A列的月份和横向的1-12月比较是否相等,形成一个二维数组;B11:B23="A"这部分是判断B列的产品是否等于A,形成一维纵向数组,C11:C23是销量列。3部分相乘的结果还是一个二维数组,如下图所示。这样的话每个月A产品的销量就显示出来了,接下来只需要对每个月的销量求和,也就是按列的方向求和。
mmult的第1参数TRANSPOSE(ROW(11:23)^0)是为了构建横向的多个1,它的列数与上图二维数组的行数相同。如果这2个参数明白了,那么接下来就是用mmult求和了,返回的结果是{44,71,64,0,0,0,0,0,0,0,0,0},肯定是1行12列,分别是1-12月的A产品的销量,然后用max求最大值。
对应月份的公式为=MOD(MAX(MMULT(TRANSPOSE(ROW(11:23)^0),(A11:A23=COLUMN(A:L))*(B11:B23="A")*C11:C23)/1%+COLUMN(A:L)),100),按三键结束,同样是加权的处理方式,和sumifs的处理方式一样。
用mmult来完成,公式可以有其他多种写法。比如最大销量的公式为=MAX(MMULT(N(TRANSPOSE(A11:A23)=ROW(1:12)),(B11:B23="A")*C11:C23)),三键结束。
对应月份的公式为=MOD(MAX(MMULT(N(TRANSPOSE(A11:A23)=ROW(1:12)),(B11:B23="A")*C11:C23)/1%+ROW(1:12)),100),三键结束。
3.求各店铺各水果的总销量
下图是各店铺水果的销量表,求出各店铺各水果的总销量。结果区域如右表所示,是一个二维表。对于这样的问题,我们之前说过,可以用sumifs数组的方法来完成。公式为=SUMIFS(C28:C38,A28:A38,{"A","B","C"},B28:B38,{"苹果";"香蕉";"橙子";"西瓜"}),这样是多单元格区域输出结果,三键结束。
如果用mmult来完成,选中F29:H32,输入公式=MMULT(N(TRANSPOSE(B28:B38)=E29:E32),(A28:A38=F28:H28)*C28:C38),三键结束。
对于这个公式,大家可以参考下图,mmult的第1参数N(TRANSPOSE(B28:B38)=E29:E32)返回的结果如下图①所示,是2个方向不同的一维数组的运算,结果形成二维数组;第2参数(A28:A38=F28:H28)*C28:C38返回的结果如下图②所示,也是2个方向不同的一维数组的运算,结果形成二维数组,然后再乘以一个一维数组,结果还是二维数组。下图④就是mmult返回的结果。
说说我对mmult的认识和感想吧:mmult和sumifs,countifs的功能有点类似,但又有区别。也可以看作sumproduct的升级版,sumproduct返回的结果只有一个单值,而mmult可以返回一个数组。
mmult第1参数的行可以和第2参数的列交互相乘,这样的话也可以看作方向不同的一维数组的运算,只不过数组的元素看作是一行或一列。(感觉我在把一个新事物往已有的模型套

,这样不太好,触碰不到存在本身)。

另外mmult也经常和transpose结合使用,所以利用transpose转置的话,一定要明白转置的是哪些列或者行。第1参数的列数和第2参数的行数相等,这就是一个标准。当把第1参数转置后,它的高度和第2参数的高度是一样的。所以2列高度一样的数据,其中1列就可以转置。比如上图店铺列的数据和水果列的数据高度是一样的,其中1列就可以转置。
文件链接:
https://pan.baidu.com/s/1DTjaycyHsYGgn_IGbURu_A
提取码:3tl3
(0)

相关推荐

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

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

  • 精通Excel数组公式022:提取唯一值列表并排序(续)

    使用公式对数字进行排序 下图12展示了两个对数字进行排序的公式.使用SMALL/ROWS函数从小到大排序,使用LARGE/ROWS函数从大到小排序. 图12 使用辅助列公式对基于数字列的记录进行排序 ...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • Excel中通过函数实现多表按条件求和汇总,简单到没朋友!

    Excel中通过函数实现多表按条件求和汇总,简单到没朋友!