2016-08-24 80 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