excel表格不一样的R1C1引用样式

A1样式和R1C1样式的历史
最初发明第一款电子表格软件VisiCalc的Dan Bricklin和Bob Frankston对单元格使用A1样式,而Microsoft早期的电子表格MultiPlan使用的是R1C1样式 。上世纪80年代,Lotus是电子表格领域的翘楚,牢牢占据着电子表格市场,而它采用的正是VisiCalc用户熟悉的A1样式 。为了在电子表格市场抢战更多的份额,Microsoft让Excel既可以使用A1样式又可以使用R1C1样式 。
通常,我们都是使用A1样式,这也是Excel的默认样式 。然而,R1C1样式有很多独到之处 。
什么是R1C1样式
在“Excel选项”的“公式”下,选取“R1C1引用样式”,即可在公式中使用R1C1样式 。Excel提示也给出了R1C1引用样式的说明,见下图所示 。此时,工作表中顶部的列标由字母变成了数字 。

excel表格不一样的R1C1引用样式

文章插图
让我们通过与A1样式对比来认识R1C1样式 。如下图所示的工作表,列D中通过公式来计算销售额和销售合计,列F是使用A1样式的公式,列G是使用R1C1样式的公式 。
excel表格不一样的R1C1引用样式

文章插图
可以看出:
对于R1C1样式表示的相对引用,在方括号中放置行数或列数,表示相对于当前单元格移动指定行数或列数的单元格,负数表示向左或向上移动,正数表示向右或向下移动 。例如RC[-2]表示相对于当前单元格在当前行左移2列的单元格,R[-4]C表示相对于当前单元格在当前列向上移8行的单元格 。
再看看SUM函数中使用的单元格引用 。对比A1样式,R1C1样式的绝对引用为表示行列的字母后直接加上行号和列号 。如示例中的R2C4表示单元格D2,R5C4表示单元格D5 。那么,RC表示当前单元格,R3C表示当前列中第3行的单元格,RC3表示当前行中第3列的单元格 。使用A1样式,如果当前单元格为$D$6,那么R3C等价于D$3,RC3等价于$C6 。
为什么要使用R1C1样式
仍以上图所示的工作表为例 。我们对比A1样式和R1C1样式求销售额的公式,可以看到使用R1C1样式的公式相同 。也就是说,在多个单元格中,只需一个公式就可得出结果 。并且,公式引用的单元格的变化并不会影响公式 。我想,这或许就是使用R1C1样式的主要优势 。
在VBA中,也是如此 。我们使用代码来求上图所示工作表中的销售额 。
使用A1样式的代码:
Range(“D2”).Formula= “=B2*C2”
Range(“D2”).CopyDestination:=Range(“D3:D5”)
使用R1C1样式的代码:
Range(“D2:D5”).FormulaR1C1= “=RC[-2]*RC[-1]”
使用R1C1样式的代码更简洁,更有效率 。
此外,我们在录制宏代码时,宏录制器在录制公式时就是使用R1C1样式 。
更进一步地说,Excel是以R1C1样式来完成引用和计算,而是以A1样式来显示地址和公式,因此R1C1样式的公式会更加有效 。
这就是R1C1样式的秘密!
还有一点值得一提,在A1样式中,同样的公式,但输入的单元格不同,含义不一样,例如:
在单元格D8中输入公式:$A5+C3
在单元格K10中输入公式:$A5+C3
但是,R1C1样式的公式不依赖公式所在的单元格 。
这也是R1C1样式的一个优点 。
技巧1:Excel默认为A1样式,因此工作表上方显示的是字母表示的列号 。如果想要快速得到某列的列号,可以先选取单元格A1,然后向右拖动至目标列,在名称框可以看到列号数值,如下图所示 。
excel表格不一样的R1C1引用样式

文章插图
技巧2:可以利用R1C1样式公式的一致性来找出存在错误的公式 。在复制或输入完公式后,切换到R1C1引用样式来检查公式,如果某个公式与其它公式不同,那么这个公式可能存在错误 。

推荐阅读