在Excel中插入空白行时,使用OFFSET函数维护单元格引用

时间:2019-12-10 10:33:22

标签: excel excel-formula

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

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

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

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

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

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

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

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

2 个答案:

答案 0 :(得分: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),相当于{{1} }。

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

答案 1 :(得分:0)

仅警告,偏移和间接是易失函数。当Excel重新计算时,普通函数仅在其引用的数据发生更改时才重新计算。即使更改在另一个打开的工作簿上,Excel中的每个更改也会重新计算易失函数。

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

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

它也不会更改在创建新行时的引用。