传递逗号分隔的数组作为函数参数

我有一个包含唯一标识符的列,另一个包含价格:

A | B --+--- 1 | $2 2 | $4 3 | $1 s | $6 7 | $5 x | $4 5 | $4 

在工作簿中的其他地方,我也有一个包含逗号分隔数组的列:

  C --------- 2,3,s 3,1 x 7,2,3,s,5 

在D栏中,我想要有各自价格的总和,例如2,3,s C1中的D1将给D1中的$11 。 ($ 4 + $ 1 + $ 6 = $ 11)

我已经尝试通过数组{2;3;"s"}search这个公式:

 =SUM(SUMIF($A$1:$A$7;{2;3;"s"};$B$1:$B$7)) 

但它只适用于硬编码数组。 这不起作用:

 =SUM(SUMIF($A$1:$A$7;C1 ;$B$1:$B$7)) 

我应该改变这个函数,以便正确地读取文本逗号分隔的数组?

(一个用户定义的函数,快速完成这一点也将赞赏。)

使用SUMPRODUCT和SEARCH():

 =SUMPRODUCT(ISNUMBER(SEARCH($A$1:$A$7,C1))*$B$1:$B$7) 

这将遍历列A,并查看该值是否包含在C1中的string中。 SUMPRODUCT将B中的值相加,其中SEARCH返回true。

在这里输入图像描述


如果你的列A将包含像aaa或者111这样a东西,那么它们都将被拾取。 为了确保正确的一个被拿起,我们可以稍微改变公式,并强制进行特定的查找:

 =SUMPRODUCT(ISNUMBER(SEARCH("," & $A$1:$A$7 & ",","," & C1 & ","))*$B$1:$B$7)