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

    这里得到的公式应该类似于=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,))
    相较而言,我个人更喜欢直接给出比较简单的公式代码,而不是借用其他向导完成这项工作。当然大家各有所好,挑选一种适合自己的方法完成工作就可以了

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。