vso*_*ler 8 excel lambda excel-formula office365 excel-lambda
自从我得知 Excel 现在是图灵完备的,我就明白我现在可以仅使用公式对 Excel 进行“编程”,因此排除任何 VBA 的使用。
我不知道我的结论是对还是错。事实上,我并不介意。
然而,令我满意的是,我已经能够在公式中“编程”程序流的两个最基本的结构:1-分支控制流(使用 IF 函数在 Excel 中没有秘密)和 2-循环(FOR、WHILE , UNTIL 循环)。
让我更详细地解释一下我的发现。(备注:因为我使用的是西班牙语版本的 Excel 365,所以公式中的字段分隔符是分号(“;”)而不是逗号(“,”)。
A- FOR 循环中的累加器
B- 阶乘(使用产品)
C-WHILE循环
D-UNTIL 循环
E- 内部/外部范围的概念
现在,我提问的时间到了:
我想使用一个实际上是公式数组的公式
我想对“元组”中的第一个数字使用累加器,而我想对元组中的第二个数字使用阶乘。所有这一切都使用一个 Excel 公式。我想我离成功已经不远了。
REDUCE 函数接受包含 2 个 LAMBDAS 而不是单个 LAMBDA 函数的 LET 函数。到这里为止,一切都很完美。然而,LET 函数似乎只返回一个“单个”函数而不是函数元组
我可以返回(在图中)函数“x”或函数“y”,但不能返回元组(x,y)。
我尝试过使用 HSTACK(x,y),但它似乎不起作用。
我知道这是一个复杂的问题,但我已尽力让自己被理解。
有人可以给我任何关于如何解决我的问题的线索吗?
非常好的问题。
我注意到,在您的尝试中,您在第一个参数中给出了REDUCE()单个常量值。有趣的是,文档中没有任何地方指出您不能以array-format给出值。因此,您可以使用第一个参数以(您的情况;水平)数组格式给出所有常量,当您循环第二个参数的数组时,您可以使用以下方法应用不同类型的逻辑:CHOOSE()
=REDUCE({0,1},SEQUENCE(5),LAMBDA(a,b,CHOOSE({1,2},a+b,a*b)))
Run Code Online (Sandbox Code Playgroud)
这样,您就有了一个REDUCE()函数,该函数的内部进程将从数组形式的第一个参数更新给定的常量。您现在可以开始水平堆叠多个函数并输入常量数组,例如:
=REDUCE({0,1,100},SEQUENCE(5),LAMBDA(a,b,CHOOSE({1,2,3},a+b,a*b,a/b)))
Run Code Online (Sandbox Code Playgroud)
我想您必须像我在荷兰语版本的 Excel 中一样使用{0\1}和。{1\2}
给定你的累加器:
公式为A1:
=REDUCE(F1:G1,SEQUENCE(F3),LAMBDA(a,b,CHOOSE({1,2},a+b,a*b)))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
603 次 |
| 最近记录: |