如何用SCAN函数在单列中创建多类别累计值(支持无限类别)
多类别动态累计的SCAN函数实现方案
在C2单元格输入以下公式,即可为A列所有类别生成对应累计值,且支持任意数量的类别:
=SCAN(0, A2:A, LAMBDA(acc, curr, IF(curr="", "", SUMIF(A$2:A2, curr, B$2:B2))))
公式说明:
SCAN函数逐行遍历A2开始的所有类别,初始累计值设为0LAMBDA(acc, curr)中,curr代表当前行的类别,acc为累计器(此处主要利用SCAN的遍历特性,累计器未参与实际计算)- 空行判断:若当前类别为空,返回空值避免无效计算
SUMIF(A$2:A2, curr, B$2:B2):动态计算从A2到当前行的所有同类别单元格对应的B列数值之和,实现该类别到当前行的累计
适配任意类别的原理:
公式无需提前指定具体类别(如A、B),而是自动识别当前行的类别并计算累计。后续新增任何类别到A列,公式都会自动适配,生成对应累计值。
内容的提问来源于stack exchange,提问作者Fabian
相关产品推荐
相关产品推荐

