Excel:#CALC!使用MAP、BYROW、BYCOL、MAKEARRAY和LAMBDA函数时出错(嵌套数组)

pn9klfpd  于 2023-05-08  发布在  其他
关注(0)|答案(1)|浏览(180)

我经常遇到非常令人沮丧的#CALC!在MAP、BYROW、BYCOL或MAKEARRAY函数中使用LAMBDA时出现错误。这与下面的问题非常相似,但我发现这个例子和解决方案太长了,无法适应我自己的情况:Excel: #CALC! error (Nested Array) when using MAP functions for counting interval overlaps
下面是一个人为的但最小的例子来说明我的问题:

=LET(
    nums, SEQUENCE(25),
    rs, {10; 20},
    cs, {1, 2, 3},
    MAKEARRAY(
        ROWS(rs),
        COLUMNS(cs),
        LAMBDA(i, j,
            LET(
                r, INDEX(rs, i),
                c, INDEX(cs, j),
                SUMIFS(nums, nums, r + c)
            )
        )
    )
)
lmyy7pcs

lmyy7pcs1#

多亏了这个最小的例子,我想我才能弄清楚这一点。
这个问题似乎实际上是由于SUMIFS函数而不是其他任何东西。我注意到SUMIFS的文档提到它接受范围(而不是数组)作为参数,这就是我认为错误背后的原因。
不幸的是,我经常需要做这种交叉表格。到目前为止,我发现的最好的替代品是下面使用SUMPRODUCT的作品:

=LET(
    nums, SEQUENCE(25),
    rs, {10; 20},
    cs, {1, 2, 3},
    MAKEARRAY(
        ROWS(rs),
        COLUMNS(cs),
        LAMBDA(i, j,
            LET(
                r, INDEX(rs, i),
                c, INDEX(cs, j),
                SUMPRODUCT(nums, 1 * (nums = r + c))
            )
        )
    )
)

相关问题