Excel提供了多种表间搜索的命令和方式,其中最常用的当数LOOKUP,VLOOKUP,HLOOKUP,和多重IF流程命令这几种方式。很难说这几种方式当中哪种效果更好,哪种更适合你的情况,更何况在大型数据表格的搜索进程中我们往往要混合使用这几种方法才能达到最佳效果。本文在此仅就EXCEL中进行搜索的三种方法进行介绍,希望对你能有所帮助。
查找功能
所有查找功能的工作机理都是大致一样的。例如你输入一个零件的型号,查找功能会返回对应零件的详细描述;输入一个人名,它会返回对应联系人的联系地址。移动电话中也有搜寻功能:选中联系人姓名,就会给显示出他们的电话号码。
Excel中的LOOKUP函数有两种对应类型,矢量类和矩阵类。矢量类仅在单列或者单行内搜索给定值,并将该值赋给表格中指定某位置。也就是说,你要提供的参数包括要搜索的行或者列以及返还值所处行或者列。
LOOKUP的矩阵类型应用很少会用到,微软是这样说的,“这个功能仅仅是为其他软件提供兼容功能”。在Excel中这种矩阵类型的搜索已经完全可以用VLOOKUP和HLOOKUP替代了。
正像前面所说的,在矢量类型应用中,你要给LOOKUP函数指定三个参量,分别是搜索值,搜索范围,结果存放范围。为了解释得更清楚,你可以像我一样创建一个名为“数据”的表格,在这里我选择将数据放在B2:E4的范围内(如***1)。选中该范围,在名称栏输入“表格”(如***2)。在这里我们最关心的是B列和D列的数据――社区活动以及日期。选中B2:B5的数据,在名称栏输入“社区活动”。因为D列已经有标题“日期”了,所以直接借用,选中D1:D5,按住Shift+Ctrl+F3,当“指定名称”勾选框弹出时,勾选“首行”,点击“确定”。
将文件的另一页表格命名为“社区时讯”,在该页的B2格输入“=LOOKUP(D2,社区活动,日期)”你就可以在D2格中填入“业主年会”的同时,B2中显示出活动日期“7月7日”,输入“春季舞会”也会显示相应的日期(如***3)。但是输入另外两项活动的名称时,B2格则会返回值“N/A”(意味着值不可用)。这是为什么呢?因为LOOKUP首先需要将所有作为搜索条件的数据项以升序排列之后才能正常搜索,所以在这个例子里面,开头业主年会的开头字母Y会阻断搜索程序继续搜索以C和X开头的另外两个活动。
解决之道
针对这种情况,一种解决办法是点击“数据”菜单,选择“排序”,以升序排列B列。这样LOOKUP功能就能正确返回所有搜索结果了。
更方便的一种方法则是用VLOOKUP命令替换LOOKUP命令。VLOOKUP有别于LOOKUP,需要给定四个参数:搜索条件,数据表或数据所在矩阵位置,待搜索列,以及一个用来解决LOOKUP需要按升序搜索的问题的逻辑值。
这里我们仍以***1中尚未排序的表格为例,作为搜索条件的值仍由“社区时讯”表格中的D2指定。这里与LOOKUP最大的不同就是,在VLOOKUP中,所有搜索条件所在列的编号总是整个数据区域的第一列,也就是在名为“表格”的区域中叫做“社区活动”的B2列。函数中的第三个参量是结果所在列的编号,这个编号是从“表格”区域中的第一列顺序排下来的――B列在这里应该以“1”来表示。
要让命令返回的结果仍为“数据表格”的D列,所以第三个参量应该是“3”。只要在第四个参量的位置填入FALSE就可以解决先前提到的按照字母升序搜索带来的问题。所以在这里我们应该在B2格内输入下面这个命令:“=VLOOKUP(D2,表格,3,FALSE)”。
为了进一步了解HLOOKUP的功能,我们假设同样的数据以横向排列。选中“表格”区域,右键选择“复制”,单击“编辑”菜单|“选择性粘贴”,勾选“转置”,单击“确定”。再调整一下表格宽度,你可以得到一张大致跟我一样的新表单(如***4)。
搜索行
HLOOKUP需要一组类似的参量:搜索条件、数据矩阵、待搜索行编号,以及一个逻辑值。搜索条件仍位于“社区时讯”表格中的D2;不过这时的源数据表是“数据”表格中的B9:F12;搜索行编号仍是3;因为活动名称没有按字母升序排列,第四项逻辑值仍定在FALSE。所以在“社区时讯”表格的B2内我们应这样填入公式:“=HLOOKUP(D2, 数据!B9:F12,3,FALSE)”
在“社区时讯”的D2中输入任意一次活动的名称,都将会在B2中得到对应的活动时间。如果不希望每次都添加活动的名称,可以在D2里面创建一个下拉菜单(如***5)。
点击D2格,选择“数据”菜单下面的“有效性”,在设置标签下面选择有效性标准下拉菜单中的“序列”;在来源框中填入:“=社区活动”,单击“确定”。这样以后再点击这个单元格就会以下拉菜单形式给出原始表中“社区活动”列的活动名。
当然在Excel中还存在其他简便的搜索方法。比如使用“工具”菜单下“向导”中的“查阅”,它会自动采用INDEX和MATCH函数创建搜索条件式。当然在本例中也可以直接添加下面这个公式:“=INDEX(表格,MATCH(D2,社区活动,),3)”。
同样的INDEX函数将会搜索到对应的活动时间。函数中的参量均以矩阵格式给出,包括矩阵位置(由变量“表格”给出),行标(由“MATCH”函数给出),列标(由“3”给出)。其中的“MATCH”函数需要三个参量:搜索条件,搜索范围,和一个选添的匹配类型值。如果最后一个参量未指定,默认值为1,即返还小于等于搜索值的最大值。
查阅向导
你可以用前文中提到的方法调用查阅向导。第一步是指定待搜索区域,点击“查询向导”对话框末尾的“_”按钮,选中B1:E5;第二步将会询问哪一行和哪一列包含带查找数据,在这一步选择“日期”和“跳蚤市场”(如***6);进入第三步,选择“仅显示公式”方式显示结果;在第四步选择B2。
这里得到的公式应该类似于“=INDEX(数据!$B$1:$E$5, MATCH("跳蚤市场",数据!$B$1:$B$5,), MATCH("日期",数据!$B$1:$E$1,))”
但我们不希望搜索仅停留于跳蚤市场这一行,所以我们可以用“D2”来代替它,这样公式就变成:
“=INDEX(数据!$B$1:$E$5, MATCH(D2,数据!$B$1:$B$5,), MATCH("日期",数据!$B$1:$E$1,))”
相较而言,我个人更喜欢直接给出比较简单的公式代码,而不是借用其他向导完成这项工作。当然大家各有所好,挑选一种适合自己的方法完成工作就可以了。
转载请注明出处学文网 » Excel中的Lookup函数