我正在尝试编写一个 sumifs 公式,其中在条件中包含一个数组,但该数组位于 sumifs 公式将引用的另一个单元格中。
例如,我想实现这个结果,如果 A 列等于 5003 和 5009,我将对 B 列求和:
=SUM(SUMIFS(B:B,A:A,{"5003","5009"}))
但是,我希望这部分引用包含此数组的另一个单元格,而不是在公式中写出“{”5003”,“5009”}”。例如,我想做这样的事情:
=SUM(SUMIFS(B:B,A:A,D1))
其中 D1 等于:
D1="{"5003","5009"}"
我怎样才能实现这个目标?
在
D1
中,如果您的条件以逗号分隔,那么您可以使用 FILTERXML()
为 SUMIFS()
条件构建数组。试试下面
=SUM(SUMIFS(B:B,A:A,FILTERXML("<t><s>"&SUBSTITUTE($D$1,",","</s><s>")&"</s></t>","//s")))
如果您的数据与
"{"5003","5009"}"
单元格中的 D1
完全相同,请尝试以下公式。
=SUM(SUMIFS(B:B,A:A,FILTERXML("<t><s>"&SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE($D$1,CHAR(34),""),"{",""),"}",""),",","</s><s>")&"</s></t>","//s")))
根据之前的答案提出了解决方案......
我引用的单元格包含我想要在 SUMIFS 公式中考虑的多个标准。在我使用 TEXTSPLIT 公式之前,无法使该单元格表现得像数组一样。使用分号分隔符在引用的单元格中写入我的两个标准:
Criteria 1;Criteria 2
假设文本位于单元格 D1 中,值位于 B 列中,条件范围位于 A 列中,我这样编写公式:
=SUM(SUMIFS(B:B,A:A,TEXTSPLIT(D1,";")))
这为我破解了密码。最终公式要复杂得多,但这是我缺少的基本原理。