在Excel公式中使用相对位置

31

如何创建一个公式,使其在删除行时不失效。

例如,在单元格F12中,我有公式:=F11+D12-E12

这基本上是说从上面的单元格取值,然后加上左边第二个单元格的值并减去左边直接的单元格的值。

但是,由于我正在使用实际的单元格地址,所以一旦我删除一行,所有下面的行都变成无效的。

如何通过相对位置表示公式(即=“上面1个”+“左侧2个”-“左侧1个”)。

谢谢。

3个回答

41

您可以使用以下两种公式之一:

  • =OFFSET(F12,-1,0)+OFFSET(F12,0,-2)-OFFSET(F12,0,-1)
  • =INDIRECT("F11",true)+INDIRECT("D12",true)-INDIRECT("E12",true)
  • =INDIRECT("R11C6",false)+INDIRECT("R12C4",false)-INDIRECT("R12C5",false)
  • =INDIRECT("R[-1]",false)+INDIRECT("C[-2]",false)-INDIRECT("C[-1]",false)

这两种函数也允许指定范围,只需使用您个人偏好的任何一个(请参见Excel帮助)...


2
要为“INDIRECT”函数的第一个参数构建字符串,您还可以以各种方式使用“ADDRESS”函数... :] - mousio
1
对于偏移量,是否有一种从当前单元格偏移的方法?所以类似于=OFFSET(this,-1,0),而不是明确添加F12? - Adam Youngers
3
可以的,只需要结合 indirect 进行翻译:如果你的目标是 offset(this,-1,0),你可以使用 indirect("R[-1]",false),或者如果你真的需要 offset,那么我建议使用 offset(indirect("RC",false),-1,0) - mousio
@AdamYoungers 你怎么让 this 语法生效?我在 Excel 中输入 =OFFSET(this,-1,0),但它报错了。Offset 很好用,但当我不知道单元格地址时,我需要从单元格进行偏移。 - Ian Boyd
this 替换为 indirect("RC",false) 行不通吗?请参考我的先前评论... - mousio
我无法让INDIRECT("R[-1]",false)在其他语言中工作?有什么线索可以告诉它是如何翻译的吗? - HopefullyHelpful

5
  • 您可以切换到R1C1参考样式(Excel选项)
  • 使用OFFSET函数(例如,=OFFSET(F12;-1;0)表示上方)

嗨 Howard,感谢您的帮助。我想要的完整OFFSET公式是=OFFSET(F12,-1,0)+OFFSET(F12,0,-2)-OFFSET(F12,0,-1)。 - FloatLeft

1
阅读文字之间的含义...你实际的问题是从加法和减法列中创建一个累计总数吗?
您可以对每一列进行求和,从绝对引用开始到相对引用结束。
假设第11行是您的第一行,请在F12单元格中放置=SUM(D$11:D12)-SUM(E$11:E12) 当您复制此单元格时,绝对引用保持不变,而相对引用会自动更新扩展范围。您甚至可以将公式复制到上一行并适用于第一行。
删除和插入行不会破坏公式,尽管任何额外的单元格都将包括在SUM()中。

如果我猜对了,请查看http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem。 - Stephen Turner

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接