平时在工作中,我们经常在Excel函数中对一些元素如单元格、行、列等元素进行相对或绝对的引用。今天我们就来探讨一下这两者的区别,以及我们又该在什么时候进行相对或者绝对引用。
相对OR绝对,认识引用
在Excel函数中少不了需要对行列的引用,相对引用是指在引用时,引用的行列会随着位置不同而发生变化。比如在下表中,假设我们在C1处输入公式“=A1”,当我们下拉公式的时候,公式会依次变为“=A2”、“=A3”,横拉则会依次变为“=B1”、“=C1”。也就是说无论公式是下拉或是横拉,引用的行列数值都会同步发生变化,这就是相对引用(图1)。
图1 相对引用
如果在D1输入公式“=$A1”,那么在下拉公式的时候,公式会依次变为“=$A2”、“=$A3”,横拉则保持不变一直为“=$A1”,也就是说在表示行标记的字母前加上“$”符号后,表示是对行的锁定,这样公式在横拉后保持对原来行数的引用,这就是绝对引用(示例是针对行)。如果公式改为“=A$1”,则表示对列的绝对引用,如果公式变成=$A$1则行列均锁定,就是所谓的“行列均绝对引用”(图2)。
图2 绝对引用
因地制宜,相对/绝对引用有讲究
上面我们了解了什么是相对引用和绝对引用,那么在实际工作中,相对引用和绝对引用各自应该应用在什么场合?
1.相对引用
由于相对引用是对行列进行同步的变化,因此对于没有特殊要求的公式,常规情况下都应该使用相对引用。这样在公式进行下拉或者横拉的时候,公式的引用值才不会出错。比如我们常用的SUM求和函数,在类似“=SUM(A1:A13)”公式中,这里对(A1:A13)区域进行相对引用,如果区域数值发生变化,比如删减或者增加了行数,那么公式会自动进行引用,从而始终保证引用的正确(图3)。
图3 相对引用区域
2.绝对引用
除了相对引用外,在实际工作中还有很多时候是需要对行列进行绝对引用。这样引用的数值才不会出现错误。比如我们经常使用VLOOKUP函数制作查询语句,因为查询的范围是固定,所以就需要使用绝对引用固定查询区域。
比如下表是使用Vlookup进行查询A1:E5的数据,如果使用相对引用的语句,在B11输入公式“=VLOOKUP(A11,A1:E5,2,0)”,将函数下拉的时候B13会出现“#N/A”的提示(图4)。
图4 相对引用导致引用错误
这个错误就是由于相对引用造成的,定位到B13,可以看到这里的公式是“=VLOOKUP(A13,A3:E7,2,0)”,也就是在A3:E7的范围去查找数据,因为产品A实际是在A2单元格(不在A3:E7区域),所以导致引用错误。因此要实现引用正确性,我们就需要对A1:E5区域进行绝对引用。同上定位到B11,将公式更改为“=VLOOKUP(A11,$A$1:$E$5,2,0)”(在Excel中输入公式时,只要按下F4键,就能简单地对单元格的相对引用和绝对引用进行切换),这里使用$固定引用区域,这样公式下拉后就不会再出现引用错误了(图5)。
图5 绝对引用可以避免错误
上述例子是固定区域进行绝对引用,在实际使用中我们还可以根据实际需要对行、列、或者单元格进行绝对引用。比如在产品系列的利润率是一定的情况下,当我们对下表的产品利润总和进行计算(销售额*利润率)。由于利润率是固定引用B6的数据,此时此时就需要在E2输入公式“=D2*$B$6”(即固定B6进行绝对引用,如果使用相对引用,则会导致引用的利润率数值不准确),这样下拉公式就不会出现数据错误了(图6)。
图6 绝对引用单元格
3.混合引用
上面主要介绍相对引用和绝对引用,在实际操作中还会遇到混合引用,也就是在一个公式中同时需要上述两种引用。比如下表数据中,一款产品针对不同等级会员有多个售价,如果要快速计算出每种会员的价格,此时就需要使用混合引用。
因为这里折扣参数是在第2行(E2和F2),C、D列数据是将B列数据*折扣率获取的。因此在这个案例中,我们需要固定B列数据和固定第二行数据,使得公式在下拉和右拉的时候,基准价始终引用的是B列数据,而右拉的时候则是始终引用第二行的折扣数据。这就是一个典型的混合引用(图7)。
图7 混合引用示例
定位到C2输入公式“=$B2*E$2”(固定B列,固定第2行),这样将公式下拉右拉可以看到引用的就都是固定行列的数据,这样可以快速求出不同会员的实际折扣售价(图8)。
图8 混合引用
,