使用查找 table 对值求和,其中查找值是用逗号分隔符的值列表
Sum values using lookup table, where lookup values are a list of values with comma delimiter
我正在尝试根据等于查找值的值求和。但是,该值实际上是由逗号分隔的值列表。下面是我的意思的一个例子。
假设我有以下 sheet1
形式的原始数据:
工作表 1:
A
B
1
ID
VALUE
2
A
30
3
A
50
4
A
20
5
B
10
6
B
20
7
C
70
8
C
40
9
D
30
10
E
50
11
F
20
12
F
30
13
G
10
然后我查看了 table 按各自团队对所有 ID 进行分组的情况,如下 sheet2
所示。
工作表 2:
A
B
1
TEAM
IDS
2
Red
A, B
3
Blue
C, D
4
Green
E, F, G
我想创建一个报告,用户可以在其中 select 团队名称,sheet1 中的值的总和将根据 selection 聚合,如下例所示.因此,用户将 select 单元格 B1
中的“绿色”,并且它将 return 对应于 sheet1
.[=20 中的 E、F 和 G 的值的总和=]
报告:
A
B
1
Select Team:
Green
2
Sum:
110
我到处寻找解决方案,并找到了类似的东西。我试图为我的数据重新调整公式,但无法让它工作,因为我认为该解决方案处理的是数字而不是文本。
Excel: Perform a SUMIF where the criteria is a comma-delimited list
如有任何建议,我们将不胜感激!
编辑:只是想补充一点,我意识到我可以先解析出 sheet2
中的 ID,但是我正在寻找一个可以绕过它的公式,因为我的真实数据集非常大并且解析出来每个团队下的ID会爆炸行数。
关于链接问题的@JvdV 解决方案的变体:
=SUMPRODUCT(SUMIFS(Sheet1!B:B,Sheet1!A:A,FILTERXML("<t><s>"&SUBSTITUTE(VLOOKUP(Sheet2!F1,Sheet2!A:B,2,FALSE),",","</s><s>")&"</s></t>","//s")))
请注意,这仅适用于 Excel 2013 或更高版本且仅适用于 PC。 FILTERXML 在 Mac 或 2013 年之前不可用。
如果 Mac 或 2013 年之前:
=SUMPRODUCT(SUMIFS(Sheet1!B:B,Sheet1!A:A,TRIM(MID(SUBSTITUTE(VLOOKUP(F1,Sheet2!A:B,2,FALSE),",",REPT(" ",999)),(ROW($ZY1:INDEX($ZY:$ZY,LEN(VLOOKUP(F1,Sheet2!A:B,2,FALSE))-LEN(SUBSTITUTE(VLOOKUP(F1,Sheet2!A:B,2,FALSE),",",""))+1))-1)*999+1,999))))
我正在尝试根据等于查找值的值求和。但是,该值实际上是由逗号分隔的值列表。下面是我的意思的一个例子。
假设我有以下 sheet1
形式的原始数据:
工作表 1:
A | B | |
---|---|---|
1 | ID | VALUE |
2 | A | 30 |
3 | A | 50 |
4 | A | 20 |
5 | B | 10 |
6 | B | 20 |
7 | C | 70 |
8 | C | 40 |
9 | D | 30 |
10 | E | 50 |
11 | F | 20 |
12 | F | 30 |
13 | G | 10 |
然后我查看了 table 按各自团队对所有 ID 进行分组的情况,如下 sheet2
所示。
工作表 2:
A | B | |
---|---|---|
1 | TEAM | IDS |
2 | Red | A, B |
3 | Blue | C, D |
4 | Green | E, F, G |
我想创建一个报告,用户可以在其中 select 团队名称,sheet1 中的值的总和将根据 selection 聚合,如下例所示.因此,用户将 select 单元格 B1
中的“绿色”,并且它将 return 对应于 sheet1
.[=20 中的 E、F 和 G 的值的总和=]
报告:
A | B | |
---|---|---|
1 | Select Team: | Green |
2 | Sum: | 110 |
我到处寻找解决方案,并找到了类似的东西。我试图为我的数据重新调整公式,但无法让它工作,因为我认为该解决方案处理的是数字而不是文本。
Excel: Perform a SUMIF where the criteria is a comma-delimited list
如有任何建议,我们将不胜感激!
编辑:只是想补充一点,我意识到我可以先解析出 sheet2
中的 ID,但是我正在寻找一个可以绕过它的公式,因为我的真实数据集非常大并且解析出来每个团队下的ID会爆炸行数。
关于链接问题的@JvdV 解决方案的变体:
=SUMPRODUCT(SUMIFS(Sheet1!B:B,Sheet1!A:A,FILTERXML("<t><s>"&SUBSTITUTE(VLOOKUP(Sheet2!F1,Sheet2!A:B,2,FALSE),",","</s><s>")&"</s></t>","//s")))
请注意,这仅适用于 Excel 2013 或更高版本且仅适用于 PC。 FILTERXML 在 Mac 或 2013 年之前不可用。
如果 Mac 或 2013 年之前:
=SUMPRODUCT(SUMIFS(Sheet1!B:B,Sheet1!A:A,TRIM(MID(SUBSTITUTE(VLOOKUP(F1,Sheet2!A:B,2,FALSE),",",REPT(" ",999)),(ROW($ZY1:INDEX($ZY:$ZY,LEN(VLOOKUP(F1,Sheet2!A:B,2,FALSE))-LEN(SUBSTITUTE(VLOOKUP(F1,Sheet2!A:B,2,FALSE),",",""))+1))-1)*999+1,999))))