使用查找 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))))