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

小伙伴们,大家好。今天继续来说mmult在条件计数中的应用,还是来看两个例子。

1.计算晚点次数(抵达时间大于预计时间)

下图是一个时刻表,记录的是预计到达时间和实际到达时间。现在的问题是求出晚点的次数,当抵达时间大于预计时间就晚点了。下图中已经用黄色标出了,共有5次。这个问题没啥难度,用sum就可以完成。公式为=SUM(N(A3:A12>B3:B12)),三键结束。如果用mmult来完成,公式为=MMULT(TRANSPOSE(ROW(3:12)^0),N(A3:A12>B3:B12)),三键结束。

mmult的第1参数TRANSPOSE(ROW(3:12)^0)返回的结果是横向的10个1,ROW(3:12)^0返回纵向的10个1,用transpose转置一下就是横向的10个1。第2参数N(A3:A12>B3:B12)就是用抵达时间和预计时间进行大于的比较,返回的结果是逻辑值,n函数将逻辑值转为数值。这两个参数返回的结果分别如下图①和②所示。

2.求完全没有晚点的航班数量

如下图所示,在上个题目的基础上增加了航班的条件。现在的要求是计算完全没有晚点的航班数量,也就是一次都没有晚点的航班数量。现在共有4个航班,分别是A,B,C,D。其中航班A,C,D出现晚点的次数分别是1,2,1,如黄色所示。只有B航班一次晚点也没有出现,所以完全没有晚点的航班数量只有1个。题意弄明白了,题目该怎么做呢?

其实,这个题目的难度在于求出每个航班晚点的总次数,比如A航班飞行了3次,共有1次晚点;C航班飞行了3次,共有2次晚点。有个求总和的过程,所以要用到mmult。公式为=SUM((MMULT(N(A16:A25=TRANSPOSE(A16:A25)),N(B16:B25>C16:C25))=0)*(MATCH(A16:A25,A16:A25,)=ROW(16:25)-15)),三键结束。

公式有点长,实际上要分为2部分,第1部分是用mmult求每个航班晚点的总次数;第2部分是用match=row的套路来求不重复的个数。最后将两部分相乘就能得到我们想要的结果。

先来看mmult的部分,它的第1参数N(A16:A25=TRANSPOSE(A16:A25))返回1个正方形矩阵,如下图array1所示,也就是用纵向的航班和转置后横向的航班进行相等的比较,n函数将逻辑值返回数值。结果为1的就是相等的,结果为0的就是不相等的。

第2参数N(B16:B25>C16:C25)就是判断抵达时间是否大于预计时间,也就是判断是否晚点。如果成立返回true,不成立返回false。用n函数转化后,成立的返回1,不成立的返回0。结果如上图array2所示,标黄色的就是晚点的。

接下来用mmult对这2个参数进行矩阵相乘,可以参考下图的矩形图。返回的结果如④所示,我把这个结果也放在D列橙色的部分,这样就得到了每个航班晚点的总次数,可以按行的方向一一对应。比如A航班共晚点1次,C航班共晚点2次。其实我们要的是没有晚点的,也就是晚点总次数是0次的,只有B航班是符合的,如红色框所示。但是B航班有重复的,所以还要去重复。

=MATCH(A16:A25,A16:A25,)=ROW(16:25)-15返回的结果如下图E列所示,第1次出现的航班返回true,如红色框所示,重复出现的返回false。有关match=row的套路之前也说过很多次了,就不详细说明了。其实最后满足条件的只有第20行的B航班,因为mmult返回的结果还要等于0。

下图D列是用上图D列等于0返回的结果,也就是让mmult返回的结果等于0,这样的话,只有B航班返回true。F列是D列和E列相乘返回的结果,可以看到只有第20行的B航班满足条件,它符合完全没有晚点并且还不重复。最后用sum对F列的结果求和就可以了。

我能想到的另外一种方法是=SUM(--ISNA(MATCH(IF(MATCH(A16:A25,A16:A25,)=ROW(16:25)-15,A16:A25),IF(B16:B25>C16:C25,A16:A25),))),三键结束。大家也可以想想其他的方法。

文件链接:

https://pan.baidu.com/s/1Ui3-gXwWrVVFQ1CB_cv8iQ

提取码:rg33

(0)

相关推荐

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

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

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

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

  • 只要函数基础扎实,遇到难题也能轻易解决!

    送人玫瑰,手有余香,请将文章分享给更多朋友 动手操作是熟练掌握EXCEL的最快捷途径! 我们这一代人都玩过<三国志>这款游戏,也为每个人心目中最厉害的三国英雄而争论过.恰巧这里有一份三国主 ...

  • 职场的你,会玩数字游戏吗?EXCEL函数帮你数字无忧!

    送人玫瑰,手有余香,请将文章分享给更多朋友 动手操作是熟练掌握EXCEL的最快捷途径! 每个人都不可避免地要和数字打交道.现实生活中,你对数字的敏感程度,有时候决定了你的成就高度.因此,拥有极好的数字 ...

  • 总结篇--斜线求和问题

    点击上方 蓝色 文字  关注我们吧! 送人玫瑰,手有余香,请将文章分享给更多朋友 动手操作是熟练掌握EXCEL的最快捷途径! 小伙伴们啊,在EXCEL中大家经常会遇到行或列的求和问题.可是,大家遇到过 ...

  • Excel如何实现模糊近似匹配!

    最近,不止一个老铁后台问我,如何实现简称匹配全称的问题,其实也就是普遍的模糊匹配问题!今天就系统讲一下! 常见问题01 | 全称找简称 =LOOKUP(1,0/FIND($D$2:$D$6,A2),$ ...

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

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

  • 矩阵乘积函数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基础应用2:条件求和

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

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

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

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

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

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

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

  • MMULT,矩阵乘积没问题

    这个函数的作用是返回两个数组的矩阵乘积. 啥是数组?咱们可以理解为一组数. 哪啥是矩阵呢,就是有数据的矩形单元格区域,例如下面这两个长方形或是正方形的区域: 这个函数的参数很简单: MMULT(数组1 ...