无需辅助区域:对FILTER返回的双数组执行SUMIF计算
Excel 直接计算品牌对应产品的数值差值(无需辅助区域)
问题背景
表格包含两组数据:
- List A(A:C列):A列=品牌,B列=产品,C列=数值
- List B(E:G列):E列=品牌,F列=产品,G列=数值
当前通过以下公式,基于I1单元格的品牌条件,在辅助区域筛选对应数据:
- List A筛选:
=CHOOSECOLS(FILTER(A1:C12,A1:A12=I1),2,3) - List B筛选:
=CHOOSECOLS(FILTER(E1:G12,E1:E12=I1),2,3)
需要不依赖辅助区域,直接在I9:J11生成结果:
- 展示List A中对应品牌的唯一产品
- 计算每个产品的「List A数值总和 - List B对应数值总和」
附加条件:
- List B的品牌、产品均存在于List A中
- List B同一品牌下可能有重复产品
解决方案
方案1:分两列实现(兼容多数Excel版本)
唯一产品列(I9单元格)
Excel 365/2021版本输入后自动溢出所有唯一产品;旧版本需下拉填充:
=UNIQUE(FILTER(B1:B12,A1:A12=I1))
旧版本(2019及更早)替换为以下数组公式(输入后按
Ctrl+Shift+Enter,下拉填充):=INDEX(B:B,MIN(IF((A:A=I1)*(COUNTIF(I$8:I8,B:B)=0),ROW(B:B),99999)))&""
差值计算列(J9单元格)
Excel 365/2021版本直接输入,自动匹配I9列的产品;旧版本下拉填充:
=BYROW(I9#,LAMBDA(x,SUMIFS(C:C,A:A,I1,B:B,x)-SUMIFS(G:G,E:E,I1,F:F,x)))
旧版本替换为:
=SUMIFS(C:C,A:A,I1,B:B,I9)-SUMIFS(G:G,E:E,I1,F:F,I9)
方案2:一键生成两列结果(Excel 365/2021专属)
直接在I9单元格输入以下公式,一次性输出产品和差值两列,无需分步骤:
=LET( target_brand, I1, unique_prods, UNIQUE(FILTER(B1:B12, A1:A12=target_brand)), sum_a, SUMIFS(C:C, A:A, target_brand, B:B, unique_prods), sum_b, SUMIFS(G:G, E:E, target_brand, F:F, unique_prods), HSTACK(unique_prods, sum_a - sum_b) )
公式逻辑:
LET定义变量,简化公式结构unique_prods提取List A中目标品牌的唯一产品sum_a/sum_b分别计算两组数据中对应产品的数值总和(自动处理List B的重复产品)HSTACK横向合并产品列与差值列,直接溢出到I9:J11区域
内容的提问来源于stack exchange,提问作者Michi
相关产品推荐
相关产品推荐

