作者:宋志明
【IT168 实用技巧】在Excel中,我们经常会需要从某些工作表中查询有关的数据复制到另一个工作表中。比如我们需要把学生几次考试成绩从不同的工作表中汇总到一个新的工作表中,而这几个工作表中的参考人数及排列顺序是不完全相同的,并不能直接复制粘贴。此时,如果使用Excel的VLOOKUP、INDEX或者OFFSET函数就可以使这个问题变得非常简单。我们以Excel 2007为例。
图1
假定各成绩工作表如图1所示。B列为姓名,需要汇总的项目“总分”及“名次”位于H列和I列(即从B列开始的第7列和第8列)。而汇总表则如图2所示,A列为姓名列,C、D两列分别为要汇总过来的第一次考试成绩的总分和名次。其它各次成绩依次向后排列。
![](https://s1.51cto.com/images/blog/201906/17/af439c33f88cbfe3050480b13ccd725d.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
图2
一、VLOOKUP函数
我们可以在“综合”工作表的C3单元格输入公式“=VLOOKUP($B3,第1次!$B$1:$I$92,7,FALSE)”,回车后就可以将第一位同学第一次考试的总分汇总过来了。
把C3单元格公式复制到D3单元格,并将公式中第三个参数“7”改成“8”,回车后,就可以得到该同学第一次考试名次。
选中C3:D3这两个单元格,向下拖动填充句柄到最后就可以得到全部同学的总分及名次了。是不是很简单呀?如图3所示。
VLOOKUP函数的用法是这样的:VLOOKUP(参数1,参数2,参数3,参数4)。“参数1”是“要查找谁?”本例中B3单元格,那就是要查找B3单元格中显示的人名。“参数2”是“在哪里查找?”本例中“第1次!$B$1:$I$92”就是告诉Excel在“第1次”工作表的B1:I92单元格区域进行查找。“参数3”是“找第几列的数据?”本例中的“7”就是指从“第1次”工作表的B列开始起,第7列的数据,即H列。本例中“参数4”即“FALSE”是指查询方式为只查询精确匹配值。
该公式先在“第1次”工作表的B!:I92单元格区域的第一列(即B1:B92单元格区域)查找B3单元格数据,找到后,返回该数据所在行从B列起第7列(H列)的数据。所以,将参数3改成“8”以后,则可以返回I列的数据。
由此可以看出,使用VLOOKUP函数时,参数1的数据必须在参数2区域的第一列中。否则是不可以查找的。
二、INDEX函数
某些情况下,VLOOKUP函数可能会无用武之地,如图4所示。“综合”工作表中,姓名列放到了A列,而B列要求返回该同学所在的班级。但我们看前面的工作表就知道了,“班级”列是位于“姓名”列前面的。所以,此时我们不可能使用VLOOKUP函数来查找该同学的班级。而INDEX函数就正可以一试身手。
图4
在B3单元格输入公式“=INDEX(第1次!$A$1:$I$92,MATCH(A3,第1次!$B$1:$B$92,0),1)”,回车并向下复制公式就可以了,如图5所示。
图5
这里用到了两个函数,INDEX和MATCH。先说说这个MATCH(A3,第1次!$B$1:$B$92,0)。它的意思是在“第1次”工作表的B1:B92单元格区域中查找A3单元格数据,然后返回该数据在B1:B92单元格区域中的行数。以本例而言,该公式返回的结果是“2”。这一点,只要看一下图1所示工作表就清楚了。至于该公式中最后一个参数“0”是要求精确匹配,而且使用该参数时,B1:B92单元格区域不需要排序。
再来看这个INDEX函数。它的用法是INDEX(参数1,参数2,参数3)。参数1是要查找的区域。参数2是行数,参数3是列数。比如公式INDEX(A2:C6,2,3)的意思就是要返回在A2:C6这个区域中第二行第三列的数据,即C3单元格的数据。所以,本例中公式的意思就是返回“第1次”工作表A1:I92单元格区域中第二行第一列的数据,呵呵,那不正是该同学所在的班级嘛!
与VLOOKUP函数相比较,INDEX函数的“限制”要少一些。
三、OFFSET函数
其实,我们还可以使用OFFSET函数完成这个任务的。比如我们要查A3单元格同学在第二次考试中的总分。那么只需要点击E3单元格,并输入公式“=OFFSET(第2次!$A$1,MATCH($A3,第2次!$B$1:$B$92,0)-1,7,1,1)”,回车后并向下复制公式,就可以得到所需要的数据了。如图6所示。
图6
OFFSET函数是以指定的引用为参照系,通过给定偏移量得到新的引用,比如公式“=OFFSET(C3,2,3,1,1)”,它的意思就是返回以C3单元格为基准,向下偏移2个单元格,向右偏移3个单元格处的单元格数据,即F5单元格的数据,数一下就清楚了。
所以本例公式中先由“MATCH($A3,第2次!$B$1:$B$92,0)”得到“第2次”工作表B1:B92单元格中与A3单元格相匹配的数据所在行数(本例结果为2),再减去1正好是它相对于“第2次”工作表A1单元格的向下偏移的行数,而后面的参数“7”,则是该同学的总分成绩所在单元格相对于A1单元格的向右偏移量。因此,本例中在E3单元格的公式其实就是“=OFFSET(第2次!$A$1,1,7,1,1)”,其意思就是返回“第2次”工作表中相对于A1单元格下移一行右移7行处单元格数据。
好了,这三个查找引用函数的用法应该算说清楚了吧?只要我们认真研究它们的用法,相信会有很多妙用的。
摘自:http://tech.sina.com.cn/s/2007-08-06/13241658813.shtml