Google sheets ArrayFormula仅适用于第一行的间接()

Google sheets ArrayFormula仅适用于第一行的间接(),google-sheets,Google Sheets,目标是将计算Y4:Y-W4:W*V4:V+S4:S-T4:T应用于列的单元格,并在相关行中的V单元格为空或为0时保留0。注意:计算本身并不重要 当第一行的V列为0或为空时,下面的公式仅将0应用于第一个受影响的行,但列的其余部分仍为空 但是,如果检查V cell的条件对于第一行返回FALSE,这意味着所关注行中的V cell具有非零值,则整列将获得应用于每一行的适当计算结果 =ARRAYFORMULA( IF( OR( ISBLANK(INDIREC

目标是将计算Y4:Y-W4:W*V4:V+S4:S-T4:T应用于列的单元格,并在相关行中的V单元格为空或为0时保留0。注意:计算本身并不重要

当第一行的V列为0或为空时,下面的公式仅将0应用于第一个受影响的行,但列的其余部分仍为空

但是,如果检查V cell的条件对于第一行返回FALSE,这意味着所关注行中的V cell具有非零值,则整列将获得应用于每一行的适当计算结果

=ARRAYFORMULA(
    IF(
        OR(
            ISBLANK(INDIRECT("V" & ROW())),
            EQ(INDIRECT("V" & ROW()), 0)
        ),
        0,
        (Y4:Y-(W4:W*V4:V))+S4:S-T4:T
    )
)

如何修改公式,使列的其余部分即使在第一行的条件将V单元格计算为0或空白时也能填充?

您的公式有两个问题:

不能在类中或类中使用聚合函数 阵列公式。这里描述了这一点

可以使用一个逻辑表达式测试0或空白,如 C1=0或EQC1,0,如果C1为 0或空白。请注意,这使得测试单元是否 包含0,但不包含空白。看这里

我不知道你为什么使用间接法,但这个公式应该可以根据你的需要使用:

=ARRAYFORMULA(if( eq(V4:V,0),0, (Y4:Y-(W4:W*V4:V))+S4:S-T4:T))
我们已经删除了杀死数组公式的逻辑OR


我们已删除空白和0的冗余测试

成功了。感谢您分析失败的原因以及检查空白单元格和0单元格的改进说明。至于使用IndireCet,我认为应该利用它来处理同一行中受尊重的单元格,即使是在ArrayFormula中。现在我去掉了间接的,我去掉了剩下的由零填充的列,这些列在公式中使用的前面的列没有数量。毕竟,为什么间接生成列的其余单元格中的所有这些0?关于在ArrayFormula中使用聚合函数为什么它在同一个工作表上工作,而它有和=对于公式和编号4:S,isblank v4:V,S4:S-T4:T,Z4:Z+S4:S-T4:T的数组,我不知道它们在这种情况下工作的原因。这可能只是幸运的情况。我能给出的最好的建议是,如果文档中列出了无法可靠工作的聚合公式(可能是ARRAYFORMULA的未定义行为),那么最好不要这样做,而是使用提供的解决方法`“未定义行为”是所有计算机语言中的一个概念,您可以查找它。感谢您的详细介绍。