excel 什么阻止lambda函数在数组上求值?

dfddblmv  于 2023-06-07  发布在  其他
关注(0)|答案(1)|浏览(108)

我认为为标量输入值定义的lambda函数在面对数组输入时会自动遍历数组,但似乎并不普遍。我想知道为什么,因为我对我最终的定义不满意。
有一个值的范围,我想测试每个单元格的多个条件。例如,检查整数值是否大于min且小于max。
使用AND函数,我最终得到了以下lambda:

=LAMBDA(x;AND(x>2;x<10))

但是,这个定义在用作数组函数时不起作用,只有在分别应用于每个单元格时才起作用。
我尝试了一种不同的方法,并将lambda定义为纯粹的数值表达式:

=LAMBDA(x;(x>2)*(x<10)=1)

这个定义可以在数组上工作,但我发现它通常可读性较差。
为什么用AND定义不起作用?

sample workbook

7cjasjjr

7cjasjjr1#

我认为你的问题源于对LAMBDA工作原理的误解。Lambda是由预定义函数使用的自定义函数。该预定义函数遍历数组并将LAMBDA函数应用于迭代的每个元素。例如,如果您有一个2D数组,该预定义函数可以获取每列的结果。或者,它可以将表中的每个元素作为结果来获取另一个表。
在您的例子中,您希望遍历表的每一行以获得一列结果。在您的情况下,该预定义函数是BYROW。
因此,正确的LAMBDA公式为:

=BYROW(A2:A6,LAMBDA(x,
    AND(x>2,x<10)))

函数AND计算所有单个结果的数组。要将该函数应用于每个元素(在本例中为一行),必须使用另一个LAMBDA函数。
我建议看这个视频。是我知道的最好的LAMBDA教程:
Excel is Fun: All Important Excel Lookup Formulas: Excel Worksheet, Power Query & DAX – 28 Examples!
好好享受吧!

相关问题