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

时间:2016-08-24 18:12:25

标签: arrays excel

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

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栏中,我希望得到相应价格的总和,例如: C1中的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))

我应该在此函数中更改什么才能正确读取文本逗号分隔的数组?

(用户定义的快速完成此功能的功能也将受到赞赏。)

1 个答案:

答案 0 :(得分:4)

将SUMPRODUCT与SEARCH()一起使用:

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

这将遍历A列并查看该值是否包含在C1中的字符串中。 SUMPRODUCT将SE中的值与SEARCH返回true的值相加。

enter image description here

如果您的列A包含aaa111之类的内容,则会收到这两个内容。为了确保拾取正确的一个,我们可以稍微更改公式并强制执行特定查找:

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