excel - 定义具有无限个参数的 lambda 函数

标签 excel lambda excel-formula excel-lambda

VSTACK 等一些 Excel native 函数允许无限数量的参数,并且它们具有如下智能感知:

enter image description here

我想知道如何通过 LAMBDA 定义这样一个函数。

我通过可选参数尝试了 try = LAMBDA(array1, [array2], [array3], [array4], 123),参数的数量不是无限的,智能感知也不完全是相同的:

enter image description here

最佳答案

有趣的时机 - 我昨天刚刚解决了同样的问题,因为我想访问新功能,但我不能在我的工作电脑上做早期采用者。所以我制作了每个功能的“自制”版本。这是 VSTACK

VSTACK =

LAMBDA( array1, array2, [array3], [array4], [array5], [array6], [array7], [array8], 

LET( 
    pattern, MAX(   2,
                    3*NOT(ISOMITTED(array3)),
                    4*NOT(ISOMITTED(array4)),
                    5*NOT(ISOMITTED(array5)),
                    6*NOT(ISOMITTED(array6)),
                    7*NOT(ISOMITTED(array7)),
                    8*NOT(ISOMITTED(array8)) ),
    stack, LAMBDA( array_1, array_2,
            LET( 
                rows1, ROWS( array_1 ), rows2, ROWS( array_2 ),
                columns1, COLUMNS( array_1 ), columns2, COLUMNS( array_2 ),
                rSeq, SEQUENCE( rows1 + rows2 ),
                cSeq, SEQUENCE(, MAX( columns1, columns2 ) ),
                IF( ISOMITTED(array_1),
                    array_2,
                    IF( ISOMITTED(array_2),
                        array_1,
                        IF( rSeq <= rows1,
                            INDEX( IF( array_1 = "", "", array_1), rSeq, cSeq ),
                            INDEX( IF( array_2 = "", "", array_2), rSeq-rows1, cSeq ) ) ) ) )
            ),
    SWITCH( pattern,
            2, stack(array1,array2),
            3, stack(stack(array1,array2),array3),
            4, stack(stack(stack(array1,array2),array3),array4),
            5, stack(stack(stack(stack(array1,array2),array3),array4),array5),
            6, stack(stack(stack(stack(stack(array1,array2),array3),array4),array5),array6),
            7, stack(stack(stack(stack(stack(stack(array1,array2),array3),array4),array5),array6),array7),
            8, stack(stack(stack(stack(stack(stack(array1,array2),array3),array4),array5,array6),array7),array8), )
    )
);

这不是您问题的答案。我知道没有办法制作一个带有无限数量参数的 LAMBDA 函数,所以我只是做了一个粗略但可扩展的方法来添加更多参数而不重构整个东西。

NB: It is really crude, but this was a choice. I also thought of using recursion to avoid the nesting ad infinitum, but decided in the end that putting an iteration argument would be confusing and messy in comparison. My end objective was to produce "good enough".

关于excel - 定义具有无限个参数的 lambda 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72079918/

相关文章:

perl - 使用 Perl 重写现有 xls 文件

vba - Application.OnKey 无法正确重置

python pandas .map 双变量 lambda

c - 函数指针、闭包和 Lambda

Excel 2007 重复检查错误地将十六进制转换为指数

excel - 如何删除用/分隔的单元格中的重复值?

excel - 如何在 Excel 中提取满足多行和多列条件的值?

excel - SUM 变量值到 R1C1 公式

excel - VBA-MouseMove 打开和关闭另一个用户窗体

scala - 匿名函数的参数类型必须是完全已知的。 (SLS 8.5)