【问题标题】:Google Sheet arrayformula referencing previous row of same column: error circular referenceGoogle Sheet arrayformula 引用同一列的前一行:错误循环引用
【发布时间】:2021-05-23 19:55:10
【问题描述】:

尝试创建引用前一行的数组公式。 不断收到#REF 错误:

Circular dependency detected. To resolve with iterative calculation, see File > Spreadsheet Settings.

看到许多其他类似问题的帖子,但似乎都没有为我解决问题。

用户在 A 列中输入详细信息,B 列应显示开始/忙碌/结束。例如

|A              | B            |
|---------------|------------- |
|[heading A]    | [heading B]  |
|start          | start        |
|something      | busy         |
|something else | busy         |
|end            | end          |
|something      |              |
|something else |              |
|start          | start        |
|something      | busy         |
|end            | end          |
|start          | start        |
|end            | end          |
|...            | ...          |

在B2中试过,循环引用错误:

=arrayformula(if((A2:A="start")+(A2:A="end"),A2:A, if((A1:A="start")+(B1:B="busy"),"busy","") ))

=arrayformula(if((A2:A="start")+(A2:A="end"),A2:A, if((A1:A="start")+(offset(B2:B,-1,0)="busy"),"busy","") ))

这个在起始行之后的第一行显示busy(因为A1:A="start" 测试),但对于其他“忙碌”行不显示(所以:indirect("B"&row(B2:B)-1)="busy" 测试不起作用)。

=arrayformula(if((A2:A="start")+(A2:A="end"),A2:A, if((A1:A="start")+(indirect("B"&row(B2:B)-1)="busy"),"busy","") ))

对于那个,当我将"" 替换为"B"&row(B2:B)-1 时,它会按我的预期显示间接单元格引用,例如在B4 中显示“B3”。

建议如何使用 arrayformula 填充开始/忙碌/结束值?

【问题讨论】:

    标签: google-sheets google-sheets-formula


    【解决方案1】:

    在单元格B1中试试这个:

    =arrayformula({"[Heading B]";if(A2:A="start","start",if(A2:A="end","end",if(COUNTIFS(A2:A,"start",ROW(A2:A),"<="&ROW(A2:A))=COUNTIFS(A2:A,"end",ROW(A2:A),"<="&ROW(A2:A)),,"busy")))})

    注意事项:

    我检查以下条件:

    A) 单词'start'的序列

    =arrayformula(if(A2:A<>"",COUNTIFS(A2:A,"start",ROW(A2:A),"<="&ROW(A2:A)),))

    B) 单词“end”的序列:

    =arrayformula(if(A2:A<>"",COUNTIFS(A2:A,"end",ROW(A2:A),"<="&ROW(A2:A)),))

    C) 每一行的 A) 和 B) 是否相同。在它们相同的地方,该项目要么是一个“结束”,而是一个“开始”,或者是我们需要忽略的“其他东西”。

    COUNTIFS(A2:A,"start",ROW(A2:A),"<="&ROW(A2:A)) = COUNTIFS(A2:A,"end",ROW(A2:A),"<="&ROW(A2:A))

    D) 最后的逻辑在“结束”之后识别“其他”并将其插入:

    =arrayformula(if(A2:A="start","start",if(A2:A="end","end",if(xxx,,"busy")))) 其中xxx是上面C)项是否为真。

    【讨论】:

    • 是的,行得通!与我预期的完全不同的路线。期待笔记。是否容易解释为什么更明显的路线失败了?
    • 您在 col B 中的初始公式引用了 col B,因此会导致循环问题。
    • 干得好!所以关键部分似乎是countifs 限制了查看范围。仍然不确定究竟是什么导致了循环引用。
    • 是的,如果“开始”的运行行数等于“结束”的运行计数,它要么是“结束”关闭“开始”,要么是你的“某事”其他条件想忽略。 :-)
    猜你喜欢
    • 2019-08-11
    • 1970-01-01
    • 2021-09-08
    • 1970-01-01
    • 1970-01-01
    • 2022-09-24
    • 2017-01-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多