【问题标题】:Maintain cell reference with OFFSET function when inserting blank rows in Excel在 Excel 中插入空白行时使用 OFFSET 函数保持单元格引用
【发布时间】:2019-12-10 10:33:22
【问题描述】:

我有以下公式,它使用前一个工作表(数据)中的值填充一个工作表(第 1 天)的列中的值。这些值是连续的;即我不需要跳过任何行。

=OFFSET(数据!$F$6,(ROW(E2))-1,0)

我需要能够在数据工作表中插入大量空白行,从数据顶部开始,并让公式识别这一点,并在必要时用零填充第 1 天的单元格。换句话说,即使我在数据顶部插入 100 多行,我也需要工作表 2 中的公式始终引用工作表 1 中的单元格 F5。

由于我可能有 1000 行数据,我还需要在工作表 2 中自动填充公式。

这是我坚持的一点。上面的公式将使用正确的值自动填充单元格,但如果我插入 50 个空白行,它会保留单元格引用(即,给定单元格的引用从 $f$6 变为 $F$56)。

但是,如果我删除 $ 绝对引用,公式将识别何时引入空白行,但不会返回正确的值。我认为这是因为当我拖动到自动填充时,“零”引用一直在移动,所以我最终得到了其他所有值。

有谁知道这两个要求是否可以结合起来?

我正在使用 Excel Office 365 商业版(版本 15.0.5189.1000)

【问题讨论】:

    标签: excel excel-formula


    【解决方案1】:

    始终引用工作表 1 中的单元格 F5

    =INDIRECT("Data!F"&(5+ROW(E2)-2),TRUE)
    

    这应该可以。请试一试.. (:

    想法:INDIRECT(<text>,TRUE) 将指向定义的位置。例如,将 =INDIRECT("A1",TRUE) 放在字段中将等于 =A1 。在这种情况下,我们指的是地址为=Data!F5 的另一张表 ,所以=INDIRECT("Data!F5",TRUE) 可以。请注意,这也等于=INDIRECT("Data!"&"F5",TRUE)

    但在这种情况下..您还需要将公式拖动/扩展到下一行..因此“5”无法修复。因此,我们将“固定”部分 (Data!F) 和相当大的部分 (5) 分开。由于 row(e2) 返回 2,所以 (5+ROW(E2)-2) 将返回 5。所以=INDIRECT("Data!F"&(5+ROW(E2)-2),TRUE),表示=INDIRECT("Data!F"&(5+2-2),TRUE)=INDIRECT("Data!F5",TRUE),相当于=Data!F5

    然后向下拖动。 (5+ROW(E2)-2) 部分变为 (5+ROW(E3)-2),返回 6 而不是 5。因此它实际上是指 =Data!F6。

    【讨论】:

    • 谢谢你这完美的作品!我知道这可能超出了这个范围,但是你有没有机会解释上面的工作原理?它从“数据”工作表中选择列 F,但我不确定我是否理解 (5+ROW(E2,-2, TRUE) 位,因为 E2 参考实际上在第二个工作表中。这只是为了计算整数值。
    • 用解释编辑了答案。 “这只是为了计算一个整数值”不,对于行增量)。不清楚的请继续追问。我很高兴解释。 ( : 注意 : & 符号用于组合字符串。
    【解决方案2】:

    只是一个警告,Offset 和 Indirect 是 volatile 函数。当 Excel 重新计算时,普通函数只会在它引用的数据发生变化时重新计算。即使更改位于不同的打开工作簿上,也会根据 Excel 中的每次更改重新计算易失函数。

    为了避免不必要的重新计算,我们可以使用 INDEX:

    =INDEX(Data!F:F,ROW(E2)+3)
    

    它也不会改变创建新行的参考。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-26
      • 1970-01-01
      • 2020-10-13
      • 1970-01-01
      • 1970-01-01
      • 2013-07-02
      相关资源
      最近更新 更多