2016-08-24 58 views
2

我有一个包含唯一标识符的列,和另一种含价格:通行证逗号分隔的阵列作为函数参数

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列我想要有各自价格的总和,例如D1中的2,3,s将在D1中给出$11。 ($ 4 + $ 1 + $ 6 = $ 11)

我试图该公式通过阵列{2;3;"s"}搜索:

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

,但它仅具有硬编码的阵列的工作原理。这不起作用:

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

我应该在这个功能改变,因此,它会正确读取文本逗号分隔的阵列?

(完成此迅速将以及理解的用户定义函数。)

回答

4

使用SUMPRODUCT与搜索():

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

这将通过列A迭代并查看是否值包含在C1中的字符串中。 SUMPRODUCT总结B中的值,其中SEARCH返回true。

enter image description here


如果列遗嘱载之类的东西aaa111都将有所回升。为确保找到正确的公式,我们可以稍微更改公式,并强制进行特定查询:

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

真棒回答!!! –

+0

真的很棒。后一个公式完美运作。 – Scypodli