Arrays 如何在Excel中混合使用动态数组和常量数组

Arrays 如何在Excel中混合使用动态数组和常量数组,arrays,excel,Arrays,Excel,如何在Excel中将常量值数组与动态数组混合,我正在寻找一种非VBA方法来实现这一点。让我解释一下情况- 比如说,我有一列7个值。如果我想测试每一个条件,我可以生成一个相同数量的值数组。现在我想将结果数组与另一列相乘(sumproduct),该列实际上有n+1个值(在本例中为8),并且我知道要添加到此动态数组的最后一个值是常量,例如,FALSE(0) 在上面的示例中,我实际上想在动态数组的末尾添加一个常量0/False($A1:$A7我不知道如何在Excel中向现有数组添加额外元素(就像在Go

如何在Excel中将常量值数组与动态数组混合,我正在寻找一种非VBA方法来实现这一点。让我解释一下情况-

比如说,我有一列7个值。如果我想测试每一个条件,我可以生成一个相同数量的值数组。现在我想将结果数组与另一列相乘(sumproduct),该列实际上有n+1个值(在本例中为8),并且我知道要添加到此动态数组的最后一个值是常量,例如,
FALSE
0


在上面的示例中,我实际上想在动态数组的末尾添加一个常量0/False($A1:$A7我不知道如何在Excel中向现有数组添加额外元素(就像在Google工作表中一样),但您可以通过测试当前行是否小于或等于列A中的行数来解决此问题,如果不小于或等于,则采用默认值

在Microsoft 365中:

=SUM(IF(ROW(E1:E8)<=ROWS(A1:A7),A1:A7<5)*E1:E8)

=SUM(IF)(行(E1:E8)在O365中,通过序列,您可以像这样旋转:

 =LET(arr, $E$1:$E$8, bools, --($A$1:$A$7>6), boolRows, SEQUENCE(ROWS(bools)), endArr, XLOOKUP( SEQUENCE(ROWS(arr)), boolRows, bools, "DEFAULT VALUE",1,2),  SUMPRODUCT(arr,endArr))

因此,代替“默认值”,您可以使用1、0、10进行测试,看看它是否适合您。

您好,谢谢您的努力!但在我的情况下,它不起作用?使用--(A1:A7你能解释一下在哪里向这个数组添加了常量值吗?对不起,我不得不启动我的旧桌面在Excel 2019中测试它。看起来它必须输入数组-将添加到我的答案中。因此,正如我在回答中提到的,我实际上并没有向第一个数组添加元素,但我可以通过测试是否已经结束来绕过它数组的,在这种情况下,公式将使用默认值False。不幸的是,我没有使用O365,因此无法对其进行测试。对此,我投了赞成票。谢谢
=SUM(IF(ROW(E1:E8)<=ROWS(A1:A7),A1:A7<5,1)*E1:E8)
=SUM(IF(ROW(E1:INDEX(E:E,COUNT(E:E)))<=ROWS(A1:INDEX(A:A,COUNT(A:A))),A1:INDEX(A:A,COUNT(A:A))<5)*E1:INDEX(E:E,COUNT(E:E)))
=LET(A,A1:INDEX(A:A,COUNT(A:A)),E,E1:INDEX(E:E,COUNT(E:E)),SUM(IF(ROW(E)<=ROWS(A),A<5)*E))
 =LET(arr, $E$1:$E$8, bools, --($A$1:$A$7>6), boolRows, SEQUENCE(ROWS(bools)), endArr, XLOOKUP( SEQUENCE(ROWS(arr)), boolRows, bools, "DEFAULT VALUE",1,2),  SUMPRODUCT(arr,endArr))