传递逗号分隔的数组作为函数参数
我有一个包含唯一标识符的列,另一个包含价格:
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将包含像a
和aa
或者1
和11
这样a
东西,那么它们都将被拾取。 为了确保正确的一个被拿起,我们可以稍微改变公式,并强制进行特定的查找:
=SUMPRODUCT(ISNUMBER(SEARCH("," & $A$1:$A$7 & ",","," & C1 & ","))*$B$1:$B$7)