根据查找 ID 聚合值,同时满足多个条件
Aggregate values based on lookup IDs while meeting multiple criteria
我根据下面的“sheet 1”获得了销售数据。每行包含季度、产品、区域 ID 和销售数字。每个区域可以有多个 ID,我有一个查找 table (sheet 2) 表示每个 ID 属于哪个区域。
我的目标是达到 sheet 3. 本质上,我正在尝试编写一个公式,该公式将引用 A 列中的产品名称、单元格 A1 中的季度(用户将输入),以及在 B 列中汇总每个区域下的相关销售数据。
我已尝试按照以下方法在 SUMPRODUCT 内的 SUMIFS 内嵌套 INDEX & MATCH 函数,但我得到的是 #VALUE!错误:
=SUMPRODUCT(SUMIFS(INDEX(sheet1!$D:$D$,MATCH(1,($A4=sheet1!$B:$B)*($A=Sheet1!$A:$A),0),0),sheet1$C:$C,sheet2!$A:$A)*(sheet2!$B:$B=$B4))
有谁知道我的公式有什么问题,或者是否有更好的方法来解决这个问题?
Sheet 1(原始数据)
A
B
C
D
1
Quarter
Product
ID
2021 Sales
2
Q1
A
1
39
3
Q1
A
3
41
4
Q1
A
7
20
5
Q1
A
14
7
6
Q1
A
25
2
7
Q1
A
27
2
8
Q1
A
44
45
9
Q1
B
1
28
10
Q1
B
3
34
11
Q1
B
7
29
12
Q1
B
14
48
13
Q1
B
25
5
14
Q1
B
27
15
15
Q1
B
44
32
16
Q2
A
1
19
17
Q2
A
3
28
and so forth…
Sheet 2(区域 ID 查找 table)
A
B
1
ID
Region
2
1
East
3
3
East
4
7
Central
5
14
Central
6
25
Central
7
27
West
8
44
West
Sheet 3(报告)
A
B
C
1
Q1
2
3
Product
Region
Sales
4
A
East
29
5
A
Central
42
6
A
West
31
一点返工:
=SUMPRODUCT(SUMIFS(Sheet1!D:D,Sheet1!C:C,IF(Sheet2!$B:$B=$B4,Sheet2!$A:$A),Sheet1!A:A,$A,Sheet1!B:B,A4))
根据版本,退出编辑模式时可能需要使用 Ctrl-Shift-Enter 而非 Enter 进行确认。
使用动态数组公式 FILTER 我们可以将 IF() 部分替换为 FILTER():
=SUMPRODUCT(SUMIFS(Sheet1!D:D,Sheet1!C:C,FILTER(Sheet2!$A:$A,Sheet2!$B:$B=$B4),Sheet1!A:A,$A,Sheet1!B:B,A4))
而且它会节省几次迭代。
我根据下面的“sheet 1”获得了销售数据。每行包含季度、产品、区域 ID 和销售数字。每个区域可以有多个 ID,我有一个查找 table (sheet 2) 表示每个 ID 属于哪个区域。
我的目标是达到 sheet 3. 本质上,我正在尝试编写一个公式,该公式将引用 A 列中的产品名称、单元格 A1 中的季度(用户将输入),以及在 B 列中汇总每个区域下的相关销售数据。
我已尝试按照以下方法在 SUMPRODUCT 内的 SUMIFS 内嵌套 INDEX & MATCH 函数,但我得到的是 #VALUE!错误:
=SUMPRODUCT(SUMIFS(INDEX(sheet1!$D:$D$,MATCH(1,($A4=sheet1!$B:$B)*($A=Sheet1!$A:$A),0),0),sheet1$C:$C,sheet2!$A:$A)*(sheet2!$B:$B=$B4))
有谁知道我的公式有什么问题,或者是否有更好的方法来解决这个问题?
Sheet 1(原始数据)
A | B | C | D | |
---|---|---|---|---|
1 | Quarter | Product | ID | 2021 Sales |
2 | Q1 | A | 1 | 39 |
3 | Q1 | A | 3 | 41 |
4 | Q1 | A | 7 | 20 |
5 | Q1 | A | 14 | 7 |
6 | Q1 | A | 25 | 2 |
7 | Q1 | A | 27 | 2 |
8 | Q1 | A | 44 | 45 |
9 | Q1 | B | 1 | 28 |
10 | Q1 | B | 3 | 34 |
11 | Q1 | B | 7 | 29 |
12 | Q1 | B | 14 | 48 |
13 | Q1 | B | 25 | 5 |
14 | Q1 | B | 27 | 15 |
15 | Q1 | B | 44 | 32 |
16 | Q2 | A | 1 | 19 |
17 | Q2 | A | 3 | 28 |
and so forth… |
Sheet 2(区域 ID 查找 table)
A | B | |
---|---|---|
1 | ID | Region |
2 | 1 | East |
3 | 3 | East |
4 | 7 | Central |
5 | 14 | Central |
6 | 25 | Central |
7 | 27 | West |
8 | 44 | West |
Sheet 3(报告)
A | B | C | |
---|---|---|---|
1 | Q1 | ||
2 | |||
3 | Product | Region | Sales |
4 | A | East | 29 |
5 | A | Central | 42 |
6 | A | West | 31 |
一点返工:
=SUMPRODUCT(SUMIFS(Sheet1!D:D,Sheet1!C:C,IF(Sheet2!$B:$B=$B4,Sheet2!$A:$A),Sheet1!A:A,$A,Sheet1!B:B,A4))
根据版本,退出编辑模式时可能需要使用 Ctrl-Shift-Enter 而非 Enter 进行确认。
使用动态数组公式 FILTER 我们可以将 IF() 部分替换为 FILTER():
=SUMPRODUCT(SUMIFS(Sheet1!D:D,Sheet1!C:C,FILTER(Sheet2!$A:$A,Sheet2!$B:$B=$B4),Sheet1!A:A,$A,Sheet1!B:B,A4))
而且它会节省几次迭代。