连续相同累计难题,Excel365很轻松!

职场   2024-09-09 20:30   江苏  
嗨~大家好,我是E精精!
今天我们聊个分组求和的话题,具体说明如下图:



▼局部分组求和



我们直接来聊聊处理方法和处理思路!

▍分组编号

想要实现局部分组,思路其实比较简单,一般使用编号的处理思路,依次从上往下,遇到不同的编号+1,相同的用上次的编号。

我们直接来看下面的公式,公式属于基础的IF函数,重要的是其中包含的一种迭代的思维,利用前面已实现的部分作为下次处理的一个基础,这个思维非常重要!
=IF(A1=A2,N(B1),N(B1)+1)


这是一种辅助列的处理方法,如果我们想把这个辅助列作为一个整体处理,有365函数基础的同学,应该就会想到SCAN这个函数!

=SCAN(0,A1:A10<>A2:A11,SUM)

结果一致,只是现在他们是一个动态数组了,可以整体处理!这个编号的难题,我们就处理完了,下一步,我们就来实现分组求和!

▍分组求和

分组求和,之前我们讲过很多处理方案,站在现在这个时点,应该没有比GROUPBY函数更加方便的了!

▼函数公式有点长,但是很简单!
=LET(t,SCAN(0,A1:A10<>A2:A11,SUM),VSTACK(A1:B1,DROP(GROUPBY(HSTACK(t,A2:A11),B2:B11,SUM),-1,1)))


下面我们简单看一下函数公式!
核心部分看GROUPBY,他的第一参数是分组的依据,我们结果要的商品名称,所以我们把商品名称和编号一起作为分组依据,第二参数就是要聚合的列,也就是数量,第三参数聚合函数,这里是求和SUM!


如果你看不懂,我们还可以多拆分几步,或者用中文命名来降低理解的难度!

大体是这样,每一步的变量大体就是对应的逻辑意思了!

当然你也可以接着上面的辅助列继续处理,也是比较简单的!下面我们再写一种,这种我们不做过多的讲解,感兴趣的可以研究一下!

▍道路千万条

下面这个是一种比较常用的思路,就是从上往下逐行看,如果我们上一行相同,就把对应的数量加到最后一行,否则就直接拼接上当前遍历的行!
=REDUCE(A1:B1,A2:A11,LAMBDA(x,y,IF(@TAKE(+x,-1,1)=y,VSTACK(DROP(x,-1),HSTACK(y,TAKE(x,-1,-1)+OFFSET(y,,1))),VSTACK(x,OFFSET(y,,,,2)))))


OK!今天的内容就到这里!

题外话:记得上次更新还是在上次哈,连更连三年,因为前一段时间有点私事要忙,断更了一段时间,不过我E精又回来啦~~~

课程推荐
▍课程 | Excel全系列教程合集 🔥 🔥🔥
▍会员 | 再升级!终生学习第六期🔥🔥🔥
代码 | VBA常用代码合集🔥
课程 | 365函数通关教程




Excel办公实战
Excel函数、VBA、PBI等全系列教程第一人。助你轻松实现办公自动化!宗旨:易办公◎早下班!
 最新文章