我根据下面的“表 1”获得了销售数据。每行包含季度、产品、地区 ID 和销售数字。每个区域可以有多个 ID,我有一个查找表(表 2),它表示每个 ID 属于哪个区域。
我的目标是进入第 3 表。本质上,我试图编写一个公式,该公式将引用 A 列中的产品名称、单元格 A1 中的季度(用户将输入),并将相关销售数字汇总到B列中的每个区域。
我尝试在 SUMPRODUCT 内的 SUMIFS 中嵌套一个 INDEX & MATCH 函数,如下所示,但我得到了一个 #VALUE!错误:
=SUMPRODUCT(SUMIFS(INDEX(sheet1!$D:$D$,MATCH(1,($A4=sheet1!$B:$B)*($A$1=Sheet1!$A:$A),0),0),sheet1$C:$C,sheet2!$A$2:$A$8)*(sheet2!$B$2:$B$8=$B4))
有谁知道我的公式有什么问题,或者是否有更好的方法来解决这个问题?
表 1(原始数据)
A | B | C | D | |
---|---|---|---|---|
1 | 季度 | 产品 | 身份证 | 2021 年销售额 |
2 | 第一季度 | A | 1 | 39 |
3 | 第一季度 | A | 3 | 41 |
4 | 第一季度 | A | 7 | 20 |
5 | 第一季度 | A | 14 | 7 |
6 | 第一季度 | A | 25 | 2 |
7 | 第一季度 | A | 27 | 2 |
8 | 第一季度 | A | 44 | 45 |
9 | 第一季度 | B | 1 | 28 |
10 | 第一季度 | B | 3 | 34 |
11 | 第一季度 | B | 7 | 29 |
12 | 第一季度 | B | 14 | 48 |
13 | 第一季度 | B | 25 | 5 |
14 | 第一季度 | B | 27 | 15 |
15 | 第一季度 | B | 44 | 32 |
16 | 第二季度 | A | 1 | 19 |
17 | 第二季度 | A | 3 | 28 |
等等…… |
表 2(区域 ID 查找表)
A | B | |
---|---|---|
1 | 身份证 | 地区 |
2 | 1 | 东 |
3 | 3 | 东 |
4 | 7 | 中部 |
5 | 14 | 中部 |
6 | 25 | 中部 |
7 | 27 | 西 |
8 | 44 | 西 |
表 3(报告)
A | B | C | |
---|---|---|---|
1 | 第一季度 | ||
2 | |||
3 | 产品 | 地区 | 销售 |
4 | A | 东 | 29 |
5 | A | 中部 | 42 |
6 | A | 西 | 31 |
答案 0 :(得分:1)
一点点返工:
=SUMPRODUCT(SUMIFS(Sheet1!D:D,Sheet1!C:C,IF(Sheet2!$B$2:$B$8=$B4,Sheet2!$A$2:$A$8),Sheet1!A:A,$A$1,Sheet1!B:B,A4))
根据版本一在退出编辑模式时可能需要使用 Ctrl-Shift-Enter 而不是 Enter 进行确认。
使用动态数组公式 FILTER 我们可以用 FILTER() 替换 IF() 部分:
=SUMPRODUCT(SUMIFS(Sheet1!D:D,Sheet1!C:C,FILTER(Sheet2!$A$2:$A$8,Sheet2!$B$2:$B$8=$B4),Sheet1!A:A,$A$1,Sheet1!B:B,A4))
它会节省一些迭代。