【发布时间】:2021-08-25 01:37:19
【问题描述】:
给定一个具有以下结构的 Excel 表格:
Col.A Col.B Col.C Col.D Col.E Col.F Col.G
2 3 2 5 2 2
5 5 2 5 5 5 5
我在 E1 中使用的公式是
=FILTER($A1:$D1,$A1:$D1=2)
在 E2 中
=FILTER($A2:$D2,$A2:$D2=5)
Excel 返回不同单元格 E1、F1 和 E2、F2 和 G2 中的值。
是否可以存储例如E1 中公式的输出作为单元格 E1 本身中的数组,形状为
{2;2}
对于 E2
{5;5;5}
可以用类似的公式进一步分析
=SUMPRODUCT({2;2}=2)
?
理想情况下,不使用数组公式。
我知道我可以直接使用引用单元格
=SUMPRODUCT($A1:$D1=2)
但这不是我想要在这里实现的目标。
提前致谢。
【问题讨论】:
-
没有一个单元格不能容纳一个数组。它只能保存一个值。该值可以是一个看起来像数组的字符串,但随后需要对其进行解析以创建数组。只需将过滤器包裹在 SUMPRODUCT 中:
=SUMPRODUCT(--(FILTER($A1:$D1,$A1:$D1=2)=2)) -
或者,从技术上讲,您可以这样做:
=SUMPRODUCT(--(E2#=2))但我认为您不希望发生泄漏。 -
@ScottCraner 谢谢。我尝试使用 ="{"&TEXTJOIN(",",TRUE,FILTER($A1:$D1,$A1:$D1=2))&"}" 构建数组,但后来无法将其用作这样的。 “解析”是什么意思?
-
@ScottCraner 是的,确切地说,我不想泄漏。
-
然后只需将过滤器公式放在您希望使用数组的公式中。用 TEXTJOIN 把它变成一个字符串,然后用 MID 或 FILTERXML 等其他函数解析每个部分很慢。