你真的理解了相对引用?这三点95%的人都不会,你呢?

最近推送的五篇文章:

一、基本应用

注:本小节是给新手看的,熟手可以跳过本小节直接看后面三节。

我们知道单元格地址是用行号与列标组合在一起表示 ,比如A1就表示A列与第一行的交叉点那个单元格。单元格的引用类型有三种:

1、相对引用:形式为A1

2、绝对引用:形式为$A$1

3、混合引用:形式为$A1、A$1

上面四种写法都表示A1单元格,只是在将单元格的公式复制或填充到其他单元格时其作用不同而已。

相对引用表示将甲单元格的公式应用到乙单元格时,公式中的单元格会根据单元格的相对位置而相应变化。就象人和影子的关系一样,人往左移动二步,影子也往左移动二步,人往前走二步,影子也会往前走二步。如下图:

F14单元格的公式为:
=D4
要从F14单元格到G16单元格,其路径为:
从F14单元格往右移一列,然后往下移二行
现在将F14单元格的公式复制到G16,由于F14单元格中的公式所引用的“D4”单元格使用的是相对引用,那么它会该象影子一样,一致行动:
往右移一列,然后往下移二行
D4按上面的步伐移动后就是E6单元格。因而,将F14单元格复制粘贴公式到G16单元格后,G16单元格的公式就是:
=E6
但是,有时候并不希望公式所引用的单元格随着单元格变化而变化,也就是不管将公式复制粘贴到哪个单元格,它都是引用固定的单元格,这就要用到绝对引用。如下图公式中的SE$2的样式:

也就是说,在单元格地址的行号和列标前都加美元符号,就是绝对引用。

上图公式中的B$2就是混合引用,它的公式往下填充时不会变化,往左右拖动填充时,引用的列会随之变化。

一句话总结就是:想让引用的单元格不随行的位置变化那就在行号前加$,不随列的位置变化而变化就在列号前加$

正确地使用单元格的引用类型,可以极大的提高公式的应用范围,这是函数进阶的必备技能。

案例一:下图在B列统计每个人是第几次,那么就使用公式:

=COUNTIF($C$3:C3,C3)

案例2:前二天推送的用SUBTOTAL批量向下求和的公式:

=SUBTOTAL(9,E3:E$16)*2-SUM(E3:E$16)

如果你认为单元格引用类型只是在单元格公式中使用,那么你太小瞧它了,实际上它还有下面几种应用:

二、在定义名称中的应用
假如我们要定义一个名称“金额”,我们可以选定E3单元格,然后点击“公式”选项卡下的“定义名称”,按下图设置公式和名称:

那么,要在E列相应单元格计算金额,就可直接输入公式“=金额”即可:

这个定义名称的逻辑是这样的:
定义名称时活动单元格是E3,定义名称中使用相对引用,引用单元格是是C3、D3。那么定义名称应用到E4单元格时,引用的单元格就是C4、D4,定义名称的公式就是C4*D4
如果应用到F4单元格,引用的就是D4、E4,定义名称的公式就是D4*E4:

如果使用绝对引用,则不会随单元格变化而变化,如下图定义名称中的$G$1:

需要强调的是:

定义名称时,如果是使用相对引用、混合引用,那么定义名称时活动单元格与公式所引用的单元格的相对位置,决定了后期应用自定义名称所引用的单元格

比如,如果我们选定单元格F4(活动单元格是F4),再定义名称“金额”:

=C3*D3

C3在F4的上面第一行左边第三列的单元格,

D3在F4的上面第一行左边第二列的单元格,

那么,在E3单元格输入公式“=金额”,公式所应用的单元格就是

在E3的上面第一行左边第三列的单元格,即B2单元格,

在E3的上面第一行左边第二列的单元格,即C2单元格,

也就是说,根据相对引用的规则,E3的公式相当于是“=B2*C2”,

E4的公式相当于是“=B3*C3”,其余类推。

这一点我们通过点击名称管理器,也能看出定义名称应用到当前单元格时,所实际引用的单元格。

但是,在条件格式和高级筛选中应用相对引用,就没这么好理解了。

在条件格式中的应用
条件格式,顾名思义,是根据指定的条件显示相应的格式。比如,我们要让下图中的C5:E12单元格,根据E列数字来设置相应的格式:大于10的设置橙黄的底色。如果我们选定C5:E12单元格(活动单元格为C5),按照下面的公式设置显示规则:
显示效果如下:

只是C列正确地设置了相应的底色,D列、E列并没有正确设置为橙黄色。这是选定的活动单元格是C5,使用的公式是=E5>10。

此公式应用到D5单元格时,就是:=F5>10,其结果为FALSE;

应用到E5单元格时,就是=G5>10,其结果为FALSE。

所以D5、E5都不会显示橙黄色底色。D列E列其他单元格以此类推。

为了验证上面的描述,我们可以在F5、G5单元格输入大于10的数字,条件判断公式的结果就是TRUE,那么F5、G5就会自动设置为橙黄的底色,如下图:

特别说明:

我们在C5:E12单元格区域设置了条件格式后,不管选定此区域内的哪个单元格,点击条件格式-管理规则-编辑格式规则,看到的公式都是

=E5>10

并不会象自定义名称中,会根据选定单元格的不同,定义名称中的公式会自动变化。

如下图:

应该说,在条件格式中使用的相对引用单元格(上图中的E5),更象是一个指代符号,尽管它实际引用的单元格会随所应用单元格的位置变化而变化,但在条件格式中显示的公式都是一成不变的。这一点让新手很难理解。

为了让C5:E12根据E列的数字大小来确定是否显示为橙黄色,上面的条件格式的公式应该使用混合引用,将列号锁定不变:

=$E5>10

另外,在本案例中,设置条件格式时,如果分别选定E5:C12(活动单元格为E5)、选定C12:E5(活动单元格为C12)、选定E12:C5(活动单元格为E12),尽管都使用同一个的条件公式:
=$E5>10
但其显示结果是完全不一样的,原因参见基本应用和自定义名称应用的解释,不赘述。

从上面的应用可以看出,不管是在自定义名称,还是在条件格式中,公式中的单元格与活动单元格的相对位置决定了后期应用自定义名称所引用的单元格。关于活动单元格的更多应用,请参见之前的文章:

活动单元格居然这么多技巧,来看看你知道几个?

在高级筛选中的应用
在理解了相对应用在条件格式中的应用后,再来看一看在高级筛选中的应用,这个也不太好理解:
在下图中,如果要筛选出B5:E18单元格中每位销售员的第1笔记录。一般的做法是用辅助列,用公式计算出是第几笔,然后筛选F列是“第1笔”的,筛选出的结果就是我们要的记录。
象上面这种需求,完全可以使用高级筛选,不必使用辅助列,在C2单元格输入公式:
=COUNTIF($D$5:D5,D5)=1
筛选条件的单元格区域 为C1:C2,注意C1单元格的内容不能是B4:E4单元格中的任何一个列标题。C1可以为其他任何内容,也可以为空。筛选的设置如下:

筛选后结果如下图:

根据高级筛选的规则:
  • 用作条件的公式必须使用相对引用来引用第一行数据中相应的单元格。

  • 公式中的所有其他引用必须是绝对引用。

因而,高级筛选条件公式中的相对引用和条件格式中的一样,也是具有指代含义,它是一个指代符号,比如本案例C2单元格中的筛选条件公式中的D5,应用到区域中的第一行数据时是D5,公式为:
=COUNTIF($D$5:D5,D5)=1
应用到区域中的第二行时公式就是:
=COUNTIF($D$5:D6,D6)=1
应用到区域中的第三行时公式就是:
=COUNTIF($D$5:D7,D7)=1
其他行以此类推,
如果要筛选本案例各销售员的最后一笔、筛选各销售员的第N笔,其相关的设置参照下文:
练习题047及答案:如何筛选指定的第N条记录?
(0)

相关推荐