Office365无GROUPBY时,如何用LET单定义筛选生成唯一产品及汇总值?
解决方案
首先修正原公式中筛选条件的逻辑问题,再添加按prod.去重汇总的步骤,最终公式如下:
=LET( a, COUNTIF(G2:G4, B2:B18) + (COUNTBLANK(G2:G4) = ROWS(G2:G4)), b, COUNTIF(H2:H4, C2:C18) + (COUNTBLANK(H2:H4) = ROWS(H2:H4)), c, FILTER(A2:E18, a*b, ""), d, CHOOSECOLS(c, 4, 5), u, UNIQUE(CHOOSECOLS(d,1)), e, HSTACK(u, SUMIF(CHOOSECOLS(d,1), u, CHOOSECOLS(d,2))), e )
关键修改说明:
- 修正筛选全空的判断逻辑:原公式中
AND(G2:G4="")会返回单个布尔值,无法适配数组运算,改用COUNTBLANK(G2:G4)=ROWS(G2:G4),当筛选区域全为空时,返回与数据行对应的数组结果,确保筛选逻辑正确。 - 实现按prod.去重汇总:
- 用
UNIQUE(CHOOSECOLS(d,1))提取筛选后所有唯一的prod.值; - 用
SUMIF的数组特性,直接对所有唯一prod.批量求和; - 最后用
HSTACK将唯一prod.和汇总后的val.合并成两列结果。
- 用
替代版(BYROW写法):
如果偏好更直观的遍历逻辑,也可以用BYROW实现:
=LET( a, COUNTIF(G2:G4, B2:B18) + (COUNTBLANK(G2:G4) = ROWS(G2:G4)), b, COUNTIF(H2:H4, C2:C18) + (COUNTBLANK(H2:H4) = ROWS(H2:H4)), c, FILTER(A2:E18, a*b, ""), d, CHOOSECOLS(c, 4, 5), u, UNIQUE(CHOOSECOLS(d,1)), e, HSTACK(u, BYROW(u, LAMBDA(x, SUM(FILTER(CHOOSECOLS(d,2), CHOOSECOLS(d,1)=x))))), e )
内容的提问来源于stack exchange,提问作者Michi
相关产品推荐
相关产品推荐

