如何让Excel使用**真正的**相对寻址

我有一个复杂的电子表格,但我可以用一个简单的例子来总结我想要的:

说我想要一个预算电子表格。 我有四列:

ABCD 1: Date What Amount $1,000.00 

最后是一个快速的肮脏:它实际上应该是“平衡”,但我把我目前的银行存款余额作为一个起点…

接下来的几行是我未来的预期支出:

  ABCD 1: Date What Amount $1,000.00 2: 1 Jul 16 Electricity -$230.00 =D1+C2 (shows $770.00) 3: 3 Jul 16 Gas -$144.15 =D2+C3 (shows $625.85) 4: 4 Jul 16 Pay +$2,000.00 =D3+C4 (shows $2,625.85) 

这一切工作,这是标准的Excel。 特别注意,最后一列使用“相对寻址” – 也就是说,如果复制第4行,Excel会自动更改新的单元格以指示您想要的内容:“此处紧邻的单元格将立即添加到此处左侧的单元格” 。 如果我不想要相对地址 – 也就是说,我总是想要“ B列”或“第一行”(或两者),那么我可以在相应的部分前面放一个美元符号$

只有…这不是真正的亲戚。 如果我使用Cut-n-Paste(第6和第6天不要交的话)交换第3和第4行,Excel将会尽最大努力让公式“锚定”到之前的位置。

  ABCD 1: Date What Amount $1,000.00 2: 1 Jul 16 Electricity -$230.00 =D1+C2 (shows $770.00) 3: 4 Jul 16 Pay +$2,000.00 =D4+C3 (shows $2,625.85) 4: 6 Jul 16 Gas -$144.15 =D2+C4 (shows $625.85) 

…当我想要的是保持相对性(抱歉,爱因斯坦!):

  ABCD 1: Date What Amount $1,000.00 2: 1 Jul 16 Electricity -$230.00 =D1+C2 (shows $770.00) 3: 4 Jul 16 Pay +$2,000.00 =D2+C3 (shows $2,770.00) 4: 6 Jul 16 Gas -$144.15 =D3+C4 (shows $2,625.85) 

更糟的是,当事件最终发生时,我想更新我的银行余额$D$1并删除有问题的行。 Excel立即将错误消息放在所有列D ! “意识到”被引用的单元已经消失了,所以它只是放弃了 – 当我再次想要的是,每个单元只是采用其新的“紧上”单元。

那么我怎样才能使公式真正相对呢?

你可以用命名的范围来完成这个任务。 我在几年前从约翰·沃肯巴赫(John Walkenbach)的一篇文章中得知。 请参阅“命名参考”部分。 这是一个简单的例子:

创build一个名为“CellAboveAndToTheLeft”或更短的名称:-)。 使其成为相对于活动单元格左边的单元格的相对引用。

在这里输入图像说明

公式=CellAboveAndToTheLeft将引用单元格的一个向上,并在其input的任何单元格的左侧。这是因为相对引用。

在这里输入图像说明

如果您删除或删除行,它调整正确。 我想有办法打破它,但它非常强大。

在这里输入图像说明

如果您想在单元格中添加一个公式,将其上方的单元格添加到单元格左侧的单元格中,则:

 =SUM(INDIRECT(ADDRESS(ROW()-1,COLUMN())),INDIRECT(ADDRESS(ROW(),COLUMN()-1))) 

在这里输入图像说明

(当然,没有人会这样做!)

在input上面的问题的时候,我认为可能有一个公式可以做我想做的事 – 我find了! 为了不浪费一个有趣的问题

而不是使用简单的单元格引用,而是使用OFFSET() 。 假设您正在移动或删除整行,则当前行的任何引用都应该与当前单元格相关 – 您可以在同一行内维护正常的引用。

OFFSET()有三个参数:

  • 从中偏移的单元格 – 例如,使用当前单元格;
  • 该单元格有多less行可抵消 – 例如,使用-1 ;
  • 该单元格有多less列可以抵消 – 例如,使用0

从而:

  ABCD 1: Date What Amount $1,000.00 2: 1 Jul 16 Electricity -$230.00 =OFFSET(D2,-1,0)+C2 (shows $770.00) 3: 4 Jul 16 Pay +$2,000.00 =OFFSET(D3,-1,0)+C3 (shows $2,770.00) 4: 6 Jul 16 Gas -$144.15 =OFFSET(D4,-1,0)+C4 (shows $2,625.85) 

由于OFFSET()公式内部的单元格引用是完全相同的单元格,因此复制,移动或删除单元格就像您想要的一样保持“相对性”。