在没有给定初始值的情况下,“归约公式”如何开始计算(excel 365)

jou*_*eng 2 excel excel-formula

我们来看看微软是怎么说的:

https://support.microsoft.com/en-us/office/reduce-function-42e39910-b345-45f3-84b8-0642b568b7cb

它说:

Reduce 函数通过对每个值应用 LAMBDA 并返回累加器中的总值,将数组缩减为累加值

我已经使用Reduce公式做了一些练习,当未指定初始值时感到困惑。

我首先尝试一个简单的例子

示例1

这个例子告诉我,如果没有指定初始值,那么第一个累加器值为空。

然后我尝试了另一个:

例2

该公式计算了4次,对应于数组元素的数量(即100,101,102,103)。

所以我们在底部得到了4 堆E3:G5和初始值 200 。

一切都是可以理解的,直到我尝试删除初始值:

例3

我的问题是:

1.在示例2中,v(100,101,102,103)没有显示在结果数组中。
example3 的结果数组底部如何包含“100”?

LAMBDA 中的公式(即 VSTACK(E3:G5,a))甚至不包含“v”。
如果未指定初始值,累加器“a”是否将数组中的第一个元素作为其值?

2.结果数组只有3堆E3:G5。为什么?
我的猜测是,当累加器“a”不为空时,计算才会开始执行它必须执行的操作(vstack)。因此,它“消耗”一次计算才能将 100 作为其初始值。我的猜测正确吗?

Fle*_*ata 5

我将您的问题的链接发布到了 LinkedIn Excel Lambda 讨论组。

YouTube 上的 @DimEarlyDiarmuid Early说道:

如果没有初始值,REDUCE 会将数组的第一个元素作为初始值,然后迭代数组的其余元素。如果这导致一个空数组(即只有一个值开始),它只返回该值。

有趣的是,函数 write-up 不仅没有解释这一点,而且 put 提供了一个积极误导性的例子。下面文章中的示例 1 省略了“初始值”参数,但这只是巧合,因为 1 = 1^2(如果您尝试输入任何其他值,它会给出错误的答案)。

https://support.microsoft.com/en-us/office/reduce-function-42e39910-b345-45f3-84b8-0642b568b7cb?ns=excel&version=90&syslcid=1033&uilcid=1033&appver=zxl900&helpid=xlmain11.chm60702&ui=en-us&rs= en-us&ad=us

  • 有趣的是,然后遵循以下逻辑:`=REDUCE(, SEQUENCE(1), LAMBDA(ac,a, ac&a))`和这个:`=REDUCE("", SEQUENCE(1), LAMBDA(ac,a) , ac&a))` 不会产生相同的结果,两者都返回 `1`,但在第一种情况下它返回一个数字,在第二种情况下返回一个文本。不幸的是微软没有记录它 (4认同)