送人玫瑰,手有余香,请将文章分享给更多朋友
动手操作是熟练掌握EXCEL的最快捷途径!
【置顶公众号】或者【设为星标】及时接收更新不迷路
小伙伴们好,今天和大家分享一道累计求和的题目。这道题目不仅仅是累计求和,还要根据特定条件来返回对应的日期。让我们赶紧一起来看看吧。
原题是这样子的:
要求很简单,朋友们都有哪些好方法呢?
MMULT函数可以处理这种问题。
在单元格F2中输入公式“=INDEX(A:A,1+MATCH(1=1,MMULT(N(ROW(1:20)>=TRANSPOSE(ROW(1:20))),(C2:C21=E2)*B2:B21)>=50,))”,三键回车即可。
思路:
ROW(1:20)>=TRANSPOSE(ROW(1:20))部分,这个技巧是配合MMULT函数求累计和值常用技巧
外层嵌套N函数,将TURE转换为1, FALSE转换为0。它们运算的结果如下。它作为MMULT函数的第一个参数
下来(C2:C21=E2)*B2:B21是第二个参数,它是一个20行1列的内存数组
MMULT函数的运算结果就是累计求和的值
MMULT函数的运算结果和50作比较,返回一组内存数组
MATCH函数找到第一个1的位置,对应的就是第一个累计值超过50的值
接下来INDEX函数返回正确答案,很简单,不再赘述
LOOKUP函数配合SUMIFS函数也可以返回正确答案。
在单元格F2中输入公式“=LOOKUP(1,0/FREQUENCY(1,N(SUMIFS(B:B,A:A,"<="&A2:A21,C:C,E2)>=50)),A2:A21)”,确认即可。
思路:
SUMIFS(B:B,A:A,"<="&A2:A21,C:C,E2)>=50部分,SUMIFS函数按条件求和,并和50作比较
N函数转换为1和0
接下来利用LOOKUP(1,0/FREQUENCY())这个常用的技巧返回正确答案。如果对这一部分还有疑问可以参看LOOKUP函数和FREQUENCY函数相关内容
OFFSET函数同样也可以用在这里。
在单元格F2中输入公式“=LOOKUP(50,SUMIF(OFFSET(C$1,,,ROW($1:$20)),E2,B$1),$A2:$A21)”,确认即可。
-END-
我就知道你“在看”
联系客服