SUMIFS函数、MMULT函数的经典套路技巧,累计求和是本质!

文摘   2024-11-01 20:00   上海  




欢迎转发和点一下“看”,文末留言互动!

置顶公众号或设为星标及时接收更新不迷路





小伙伴们好,今天继续来和大家分享关于阈值的问题。这种问题在日常工作中非常常见,解决的方法也有很多种。今天借这道题目再次来重温一下经典的函数套路吧。

原题目是这样的:




题目要求当某个人的数量达到一定的数值后,所对应的日期是哪一天。

这是一个典型的阈值问题。随着被检测值不断地累加,达到一定的目标之后就返回一个特定的目标。

解决这类题目的关键就是如何实现被检测值的累加。可以考虑使用的函数有SUMIF函数、MMULT函数以及OFFSET函数。更多的信息可以参看帖子阀值问题我用MMULT、LOOKUP 和OFFSET函数写了仨公式,快来留言区写下你的答案吧!一组阀值问题的常用处理技巧,好东西就是要拿出来分享的!SUMIF函数和MMULT函数两种方法同证累计和值问题,值得你收藏!

下面我们就赶紧一起来看看如何解决今天的这道问题吧!


01

MMULT函数解决累计求和问题




在单元格H2中输入下列公式,三键确认后并向下拖曳即可。

=LOOKUP(G2,MMULT(--(ROW($1:$13)>=TRANSPOSE(ROW($1:$13))),(A$2:A$14=F2)*(C$2:C$14)),B$3:B$15)

MMULT函数最重要的用途之一就是累计求和。

ROW($1:$13)>=TRANSPOSE(ROW($1:$13))

这个公式是和MMULT函数配套使用的。它返回下面这个矩阵。




--(ROW($1:$13)>=TRANSPOSE(ROW($1:$13)))

减负运算后得到下面的结果。




(A$2:A$14=F2)*(C$2:C$14)

这部分是满足条件的求和区域数值

MMULT(--(ROW($1:$13)>=TRANSPOSE(ROW($1:$13))),(A$2:A$14=F2)*(C$2:C$14))

MMULT函数矩阵求和,结果为{100;100;400;400;900;900;1600;1600;1600;1600;1600;1600;1600},大家看看,这是不是“张三”数量累加的结果?

LOOKUP(G2,MMULT(--(ROW($1:$13)>=TRANSPOSE(ROW($1:$13))),(A$2:A$14=F2)*(C$2:C$14)),B$3:B$15)

最后LOOKUP函数返回正确答案。


02

SUMIFS函数解决累计求和问题





在单元格H2中输入下列公式,三键确认并向下拖曳即可。

=LOOKUP(,0/FREQUENCY(G2,SUMIFS(C:C,A:A,F2,B:B,"<="&B$2:B$14)),B$2:B$14)

SUMIFS函数多条件求和。使用SUMIFS函数有一个好处,就是可以不用考虑源数据中数据的排序问题。

SUMIFS(C:C,A:A,F2,B:B,"<="&B$2:B$14)

在有些极特殊的情况下,源数据的排列顺序发生改变,所用函数公式结果有可能会出错。而这里SUMIFS函数就没有这个问题。

SUMIFS函数返回的结果如下:{100;100;400;400;900;900;1600;1600;1600;1600;1600;1600;1600}

FREQUENCY(G2,SUMIFS(C:C,A:A,F2,B:B,"<="&B$2:B$14))

利用FREQUENCY函数对G列的数据在SUMIFS函数的结果上计频。这部分返回下面的结果:{0;0;1;0;0;0;0;0;0;0;0;0;0;0},表示在累积到400的这一天时,达到题目所设定的要求。

LOOKUP(,0/FREQUENCY(G2,SUMIFS(C:C,A:A,F2,B:B,"<="&B$2:B$14)),B$2:B$14)

同样,最后由LOOKUP函数返回正确答案。


本期内容练习文件提取方式:

链接: https://pan.baidu.com/s/1nLW40LMXg-Ky0mPuc2mxjQ?pwd=v3rb 提取码: v3rb 


好了朋友们,今天和大家分享的内容就是这些了!喜欢我的文章请分享、转发、点赞和收藏吧!如有任何问题可以随时私信我哦!


-END-


长按下方二维码关注EXCEL应用之家

面对EXCEL操作问题时不再迷茫无助


我就知道你“在看”


推荐阅读

Excel应用之家
介绍、交流EXCEL各项功能在工作中的实际应用; 为你答疑解惑;分享各类图表、表格和模板;提供有偿代工服务。
 最新文章