我有以下公式,该公式使用上一个工作表(数据)中的值填充一个工作表(第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)
答案 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)
它也不会更改在创建新行时的引用。