【问题标题】:How to use ARRAYFORMULA with OFFSET to previous row without getting circular reference error如何使用带有 OFFSET 的 ARRAYFORMULA 到前一行而不出现循环引用错误
【发布时间】:2019-08-11 14:08:44
【问题描述】:

示例表:https://docs.google.com/spreadsheets/d/14ma-y3esh1S_EkzHpFBvLb0GzDZZiDsSVXFktH3Rr_E/edit?usp=sharing

在 ItemData 表的 B 列中,我通过将公式复制到列中的每个单元格中来达到我想要的结果,但我想改用 ArrayFormula 来解决这个问题。

在 C 列中,我使用 ArrayFormula 获得了相同的结果。但是,另外,C列指的是B列中的单元格,而B列指的是B列中的单元格。即B 列中的每个单元格都为上一行的单元格加 1。

如果我选择 C3 公式文本并将其粘贴到单元格 B3 的单元格编辑字段中(在复制期间不要搞砸单元格引用 - 我知道我可以将它们设为静态引用,但这不是我的问题),单元格得到一个错误值

#REF!

错误 检测到循环依赖。要解决迭代计算,请参阅文件 > 电子表格设置。

请注意,两种情况下需要做的加法都是一样的:将上一行单元格的值加1,因此不涉及循环引用。 B2中提供了一个起始值,B3及以下的单元格应使用上一行B单元格的数据。

另外,请注意,我确实尝试了文件->电子表格设置并启用最多 25 个项目的循环引用计算,但这只会填充前两个单元格(B3 和 B4)。

我该如何解决这个问题?我更喜欢 ArrayFormula 之类的东西,其中公式仅存在于单个单元格中。但是,只要在中间插入或添加到底部的任何新行都能在 B 列中添加相同的公式,复制粘贴是可以接受的。

【问题讨论】:

    标签: google-sheets offset array-formulas circular-reference


    【解决方案1】:

    匹配项总是是连续的吗?似乎是这样,因为您在公式逻辑中将每个 Item 单元格与其上方的单元格进行比较。这打破了电子表格规范化的 [不成文?] 规则;值的地址本身通常不应被视为数据。

    如果您愿意这样做,您是否考虑过明确使用位置作为数据源?示例:

    =ARRAYFORMULA(IFS(
      NOT(LEN(A3:A40)),,
      ROW(A3:A40)-3-MATCH(A3:A40,A$3:A$40,0)<=VLOOKUP(VLOOKUP(A3:A40,Items!$A$2:$D,2,false),DataPerColor!$A$2:$B,2,false),ROW(A3:A40)-3-MATCH(A3:A40,A$3:A$40,0),
      true,
    ))
    

    就像你的公式一样,用英语做的就是:

    for each row,  
    if there's no Item, don't output any ItemData,  
    if the number that belongs in this cell¹ is less than or equal to the lookup, print it,  
    otherwise, don't output any ItemData
    

    但是 ¹“属于该单元格的数字”是什么?我们如何在不使用 B 列的情况下计算它?我滥用事物的位置来获得它。向下看你的 B 行,出现的每个数字都只是:

    this row's number,  minus  
    the row where items start [always 3],  minus  
    the row number [in just the Item rows] of the first row containing this row's Item
    

    倒数第二个 ItemC 为例:第一个 ItemC 是第 16 个项目列表,而我们正在查找的那个……“倒数第二个 ItemC”是在工作表的第 21 行。 21-3-16 = 2 …你想要的数字。

    如果你能忍受,它是一个单一的配方,并且可以根据你的要求工作。

    【讨论】:

    • 您能否澄清一下“值的地址本身通常不应被视为数据”是什么意思?
    • 减去固定的起始行号是解决问题的绝妙主意!
    • 许多人不赞成将 where 数据用作另一条数据。经常这样想:“如果您的需求发生变化并且您移动了几件东西,您会注意到哪些公式幸存下来,哪些看起来不错但实际上已经损坏了吗?”我没那么挑剔。我很高兴它有效,我希望它对你长期有效。只是小心点?干杯。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-24
    • 1970-01-01
    相关资源
    最近更新 更多