最近VLOOKUP用的出了点问题,搜索了下发现时这么回事。

“上次vlookup函数在Excel中的应用中的那个vlookup公式给同事用了以后,出现一个问题,因为要逐个查询某一列中每一行的单元格值,所以要从第一行开始向下复制公式,当然是用鼠标左键拖动那种方式自动复制,但拖下来后公式中的查询范围就发生了变化。怎样在复制单元格时固定住公式中查询范围,就要用到绝对引用。
如要在B1:C4范围内查询B列中等于E列上同一行的值,从而得出B列上查询结果对应行在C列上的值,原来第一行的公式是VLOOKUP(E1,B1:C4,2,FALSE),拖动复制到第二行公式就变成了VLOOKUP(E2,B2:C5,2,FALSE),第三行则是VLOOKUP(E3,B3:C6,2,FALSE)。前面第一个查询参数因需要根据行数的不同而变成相应行上的E列单元格,倒是可以按序列自动增加数值,从E1变为E2、E3等,但后面的查找范围由于按序列增加则变掉了,从B1:C4变成B2:C5、B3:C6等,这就会出现查询错误,因为我们不需要在B1:C4范围外查找。
也可以用右键拖动不自动增加序列的方式复制单元格,但这样,查找范围虽然不动了,而查询值的单元格也不动了,如上例,只能一直是E1,而我们要求它随复制从E1按顺序变为E2、E3等。无论哪种复制方式都要手动修改每一行上的公式,这与使用公式的初衷相违背,何况如果要查询的行很多,工作量将很大。
因此使用EXCEL的绝对引用来解决以上问题。一般单元格如E1、B1:C4这样都是相对引用,这样复制单元格时,其序列就会相应变动(因为是相对的嘛),而绝对引用则是加入“$”,如$E$1、$B$1:$C$4等,这样复制时就不会变动了(因为是绝对位置)。以上公式就可以改为:VLOOKUP(E1,$B$1:$C$4,2,FALSE),因为E1是要求复制时自动增加序列的,所以仍为相对引用,而查找范围不要求变动,则以绝对引用固定,这样再用鼠标左键复制公式,第二行的就会变成VLOOKUP(E2,$B$1:$C$4,2,FALSE),第三行:VLOOKUP(E3,$B$1:$C$4,2,FALSE),……,这样就符合我们要求了,减少了工作量。”

一个$解决问题,学会。

原文地址:http://hi.baidu.com/sun_lu/blog/item/baf473dbbdfc076dd0164e2f.html