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

标签 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))

我应该对此函数进行哪些更改,以便它能够正确读取文本逗号分隔数组?

(快速完成此任务的用户定义函数也将受到赞赏。)

最佳答案

将 SUMPRODUCT 与 SEARCH() 一起使用:

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

这将遍历 A 列并查看该值是否包含在 C1 的字符串中。 SUMPRODUCT 对 B 中 SEARCH 返回 true 的值求和。

enter image description here


如果您的 A 列包含 aaa111 等内容,两者都会被选中向上。为了确保选择正确的,我们可以稍微改变一下公式并强制进行特定查找:

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

关于arrays - 将逗号分隔的数组作为函数参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39130307/

相关文章:

python - openpyxl 如何将单元格设置为 'ignore error'?

javascript - 如何将按钮列表重构为 map 功能

安全风险 : OLEDB Excel

python - 设置 xlsxwriter 的窗口大小

如果 Excel 中的日期列为空,R 在 read_excel() 期间将 Excel 日期列数据类型更改为逻辑

excel - 如何在 Excel 中映射对象?

php - 将多维数组中的重复数组键分组到子数组中

php - 在 foreach 中对 mysql-select 中的数组进行排序

javascript - 为什么通过索引访问数组元素比使用 .find() 函数慢?

java - 程序可以运行,但不正确并且不确定哪里出了问题