构建一个动态数组,列出值为FALSE的行所对应的表头和行号

编程语言 2026-07-08

问题

尝试创建一个公式(或一个VBA宏),使其生成在“期望数组输出”下的数组。对于第3 行中每个包含一个 FALSE 的字段,我希望它返回该字段中相关的 Loan ID,即 = FALSE。我已经尝试了各种公式,包括下面这个,它们都在报错。若有建议,万分感谢。

数据集

R/C A B C D E F G
1 2 1 - 1 1
2 FALSE FALSE TRUE FALSE FALSE
3 Check Loan ID Source Loan Number Primary Servicer Servicing Fee Percentage Servicing Fee Flat Dollar
4 FALSE M000001 TRUE TRUE TRUE TRUE FALSE
5 FALSE M000002 FALSE TRUE TRUE TRUE TRUE
6 FALSE M000003 TRUE FALSE TRUE TRUE TRUE
7 FALSE M000004 TRUE TRUE TRUE FALSE TRUE
8 TRUE M000005 TRUE TRUE TRUE TRUE TRUE
9 TRUE M000006 TRUE TRUE TRUE TRUE TRUE
10 TRUE M000007 TRUE TRUE TRUE TRUE TRUE
11 FALSE M000008 FALSE TRUE TRUE TRUE TRUE
12 TRUE M000009 TRUE TRUE TRUE TRUE TRUE
13 TRUE M000010 TRUE TRUE TRUE TRUE TRUE

期望数组输出

字段 贷款编号
来源 M000002
来源 M000008
贷款编号 M000003
服务费百分比 M000004
服务费固定金额 M000001

测试方法

返回 #CALC! 错误

excel

=LET(
    data, C5:H14,
    headers, C4:H4,
    active, C3:H3,
    loans, B5:B14,

    filteredCols, FILTER(SEQUENCE(1, COLUMNS(data)), active=TRUE),

    results,
    REDUCE("", filteredCols,
        LAMBDA(acc,col,
            VSTACK(acc,
                FILTER(
                    CHOOSE({1,2}, INDEX(headers, col), loans),
                    INDEX(data,,col)=FALSE
                )
            )
        )
    ),

    DROP(results,1)
)

解决方案

如果你有M365,可以使用如下方法:

=LET(L,LAMBDA(x,TOCOL(IFS((C2:G2+C4:G13)=0,x),2,1)),HSTACK(L(C3:G3),L(B4:B13)))

定义的 L 函数会检查 C2:G2C4:G13 的组合是否为 FALSE(FALSE + FALSE = 0)。如果是,则返回它的输入 x;如果不是,则返回一个错误值并忽略它。

在这种情况下,我们返回表头 C3:G3 和ID B4:B13

站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章