今天,财务部新人小王发现:用VLOOKUP函数公式查询数据的时候,随着公式的下拉填充,明明在数据源中已经存在的唯一编码,竟然查找不到对应的物料名称,返回错误值!这场数据查询的乌龙事件,正是单元格地址中的神秘符号惹的祸。今天的文章,小编同志将带你用"锁与钥匙"的思维,掌握Excel引用的终极控制术。
在Excel或WPS表格中存在三种“神秘”的引用类型。三种引用类型有着明显的基因差异。小编将其归纳为三派:分别是自由派、保守派,中立派。这三派犹如一把锁,将引用区域牢牢束缚。
相对引用:随遇而安的自由派
比如我们要在D列统计金额(数量*单价的结果)
我们输入公式:
=B2*C2
当下拉填充公式的时候,自动变成:
=B3*C3
=B4*C4
=B5*C5
特性归纳:
相对引用如同不系绳的热气球,坐标随位置自由漂移。
绝对引用:倔强的保守派
比如我们有两列数量,D2单元格是一个固定的不变的单价3,我们想要让两列中所有的数量都与这个固定单价3相乘,分别得到所有的两列金额,显示在E:F列对应的位置。
我们输入公式:
=B2*$D$2
随着公式的向右并向下填充,D2的单价参数永不移动:
=B2*$D$2 =C2*$D$2
=B3*$D$2 =C3*$D$2
=B4*$D$2 =C4*$D$2
=B5*$D$2 =C5*$D$2
特性归纳:
用双$($D$2)给行号与列号同时上锁,化身数据堡垒。
混合引用:讲究策略的中立派。
比如我们有数量1列与数量2列,C2单元格是数量1列的单价,D2单元格是数量2列的单价,我们想要将两个数量列与之对应的两个固定单价分别相乘,得到新的两列金额显示在E:F列。
我们输入公式:
=A2*C$2
随着公式的向右填充,固定单价C2到D2是自由的:
=A2*C$2 =B2*D$2
也就是说横向填充公式时锁定了首行单价。
随着公式的向下填充,C2到D2是束缚的,永不移动。
=A2*C$2 =B2*D$2
=A3*C$2 =B3*D$2
=A4*C$2 =B4*D$2
=A5*C$2 =B5*D$2
特性归纳:
单$符号实现选择性禁锢:列自由+行锁定(如本例),或反之列锁定+行自由(同理未举例)。
上面我们讲解了锁(三种引用)特性,那么锁与钥匙的操作密码是什么呢?哈哈,其实是键盘上的F4键,选中需要上锁的参数区域,按下F4键即可切换不同的锁。
锁1(相对引用)
无$:B2完全自由
锁2(绝对引用)
按F4键加双&(行号列号前均有&):$B$2完全禁锢
锁3(混合引用-锁行不锁列)
按F4键行号前加&:B&2锁定行号,无论往哪填充,始终锁定在第2行。
锁3(混合引用-锁列不锁行)
按F4键列号前加&:&B2锁定列号,无论往哪填充,始终锁定在B列。
F4键的形态切换术:选中公式中的单元格引用,按F4键可在四种状态间循环,我们继续用一个四宫格来演示一下变化过程,可以加深我们的理解:
自由流动用相对引用(无$)
永恒坐标用绝对引用(双$)
纵横捭阖用混合引用(行号前单$)锁行不锁列
纵横捭阖用混合引用(列号前单$)锁列不锁行
我们回到文章开头的场景,财务部新人小王遇到的问题:为什么查询到E6单元格的编码“a101”以及下方的编码时出现了错误值:
F2单元格起始位置的公式:
=VLOOKUP(E2,B2:C10,2,0)
查询到F6单元格出错时的公式:
=VLOOKUP(E6,B6:C14,2,0)
很明显VLOOKUP的第2参数查询区域已经由最初的“B2:C10”严重偏移到了B6:C14区域,而需要查找的“a101”已经不存在于B6:C14区域了,所以查找不到出现了错误值。也就是说最初的B2:C10是相对引用,已经“漂移”到了B6:C14区域。
我们需要做的就是对最初的:
=VLOOKUP(E2,B2:C10,2,0)
第2参数B2:C10加上绝对引用,目的就是让他固定不变。
=VLOOKUP(E2,$B$2:$C$10,2,0)
那为什么财务部新人小王之前会认为:我以前就是这么做的,咋没出现错误呢?原因可能有两点:
第一点就是他之前可能选择的VLOOKUP第2参数查询区域为整个的B与C两列B:C:
=VLOOKUP(E2,B:C,2,0)
那么无论怎样下拉填充,范围都会始终是全部的B:C两列,所以涉及不到查询范围的“漂移”现象。
还有一点就是之前可能存在一种侥幸,就是即使第二参数范围变化了,但是碰巧所有的查询值都存在于这个变化的区域内,所以正好全部都查询到了,但是在实际的工作中,我们一定要有严谨的工作态度,不能存在侥幸心理。
小编最后结语:
下次当你的公式开始"暴走"时,请优雅地按下F4键,用$符号为数据戴上量身定制的镣铐。毕竟在Excel的世界里,真正的自由,源于对禁锢的精准掌控。