【发布时间】:2022-08-02 11:38:19
【问题描述】:
自从我了解到 Excel 现在是图灵完备的,我明白我现在可以使用专门的公式“编程”Excel,因此不使用任何 VBA。
我不知道我的结论是对还是错。事实上,我并不介意。
然而,令我满意的是,我已经能够在公式中“编程”两个最基本的程序流结构:1-分支控制流(使用 IF 函数在 excel 中没有秘密)和 2-循环(FOR , WHILE, UNTIL 循环)。
让我更详细地解释一下我的发现。 (备注:因为我使用的是西班牙语版的 Excel 365,公式中的字段分隔符是分号 (\";\") 而不是逗号 (\",\")。
AN- FOR 循环中的累加器
B- 阶乘(使用产品)
C- WHILE 循环
D-UNTIL 循环
E- 内部/外部范围的概念
现在,我的提问时间到了:
我想使用一个实际上是一组公式的公式
我想为“元组”中的第一个数字使用累加器,而我想为元组中的第二个数字使用阶乘。而这一切都使用一个单一的 excel 公式。我想我离成功并不遥远。
REDUCE 函数接受包含 2 个 LAMBDAS 而不是单个 LAMBDA 函数的 LET 函数。到这里为止,一切都很完美。但是,LET 函数似乎只返回一个“单个”函数而不是函数元组
我可以返回(在图片中)函数 \"x\" 或函数 \"y\" 但不能返回元组 (x,y)。
我曾尝试使用 HSTACK(x,y),但它似乎不起作用。
我知道这是一个复杂的问题,但我已尽力让自己理解。
任何人都可以给我任何关于如何解决我的问题的线索吗?
-
=REDUCE(0,SEQUENCE(5),LET(x,LAMBDA(a,b,a+b),y,LAMBDA(a,b,a*b),CHOOSE({1,2},x,y)))对我有用,我没有 HSTACK,我使用,而不是;和{1,2}对我来说是一个水平数组。 -
谢谢你,斯科特,但它对我不起作用。 REDUCE 函数的第一个参数应该是 {0, 1} 我总是得到 0(零)作为这个 REDUCE 公式的第二个单元格,这是不正确的,因为阶乘永远不会为零
-
然后在 LET 中执行两个 REDUCE:
=LET(seq,SEQUENCE(5),x,REDUCE(0,seq,LAMBDA(a,b,a+b)),y,REDUCE(1,seq,LAMBDA(a,b,a*b)),CHOOSE({1,2},x,y) -
有用 !!!非常感谢您。您提出的解决方案包括通过 CHOOSE 函数水平堆叠两个值,这是两个 REDUCE 函数的结果。我正在寻找一种解决方案,该解决方案包括水平堆叠两个函数,然后将其应用于常量数组 {0, 1} 以产生结果,但我得出结论,不管它是真是假,即函数不能堆叠。或者,至少,这在我看来是这样。
标签: excel lambda excel-formula office365 excel-lambda