当前位置:文档之家› Excel查询函数

Excel查询函数

1、LOOKUP函数与MATCH函数LOOKUP函数可以返回向量(单行区域或单列区域)或数组中的数值。

此系列函数用于在表格或数值数组的首行查找指定的数值,并由此返回表格或数组当前列中指定行处的数值。

当比较值位于数据表的首行,并且要查找下面给定行中的数据时,使用函数HLOOKUP。

当比较值位于要进行数据查找的左边一列时,使用函数VLOOKUP。

如果需要找出匹配元素的位置而不是匹配元素本身,则应该使用函数MATCH 而不是函数LOOKUP。

MATCH函数用来返回在指定方式下与指定数值匹配的数组中元素的相应位置。

从以上分析可知,查找函数的功能,一是按搜索条件,返回被搜索区域内数据的一个数据值;二是按搜索条件,返回被搜索区域内某一数据所在的位置值。

利用这两大功能,不仅能实现数据的查询,而且也能解决如"定级"之类的实际问题。

2、LOOKUP用于返回向量(单行区域或单列区域)或数组中的数值。

函数LOOKUP 有两种语法形式:向量和数组。

(1)向量形式函数LOOKUP 的向量形式是在单行区域或单列区域(向量)中查找数值,然后返回第二个单行区域或单列区域中相同位置的数值。

其基本语法形式为LOOKUP(lookup_value,lookup_vector,result_vector)Lookup_value为函数LOOKUP 在第一个向量中所要查找的数值。

Lookup_value 可以为数字、文本、逻辑值或包含数值的名称或引用。

Lookup_vector为只包含一行或一列的区域。

Lookup_vector 的数值可以为文本、数字或逻辑值。

需要注意的是Lookup_vector 的数值必须按升序排序:...、-2、-1、0、1、2、...、A-Z、FALSE、TRUE;否则,函数LOOKUP 不能返回正确的结果。

文本不区分大小写。

Result_vector 只包含一行或一列的区域,其大小必须与lookup_vector 相同。

如果函数LOOKUP 找不到lookup_value,则查找lookup_vector 中小于或等于lookup_value 的最大数值。

如果lookup_value 小于lookup_vector 中的最小值,函数LOOKUP 返回错误值#N/A。

示例详见图3图3(2)数组形式函数LOOKUP 的数组形式在数组的第一行或第一列查找指定的数值,然后返回数组的最后一行或最后一列中相同位置的数值。

通常情况下,最好使用函数HLOOKUP 或函数VLOOKUP 来替代函数LOOKUP 的数组形式。

函数LOOKUP 的这种形式主要用于与其他电子表格兼容。

关于LOOKUP的数组形式的用法在此不再赘述,感兴趣的可以参看Excel 的帮助。

3、HLOOKUP与VLOOKUPHLOOKUP用于在表格或数值数组的首行查找指定的数值,并由此返回表格或数组当前列中指定行处的数值。

VLOOKUP用于在表格或数值数组的首列查找指定的数值,并由此返回表格或数组当前行中指定列处的数值。

当比较值位于数据表的首行,并且要查找下面给定行中的数据时,请使用函数HLOOKUP。

当比较值位于要进行数据查找的左边一列时,请使用函数VLOOKUP。

语法形式为:HLOOKUP(lookup_value,table_array,row_index_num,range_lookup)VLOOKUP(lookup_value,table_array,col_index_num,range_lookup)其中,Lookup_value表示要查找的值,它必须位于自定义查找区域的最左列。

Lookup_value 可以为数值、引用或文字串。

Table_array查找的区域,用于查找数据的区域,上面的查找值必须位于这个区域的最左列。

可以使用对区域或区域名称的引用。

Row_index_num为table_array 中待返回的匹配值的行序号。

Row_index_num 为 1 时,返回table_array 第一行的数值,row_index_num 为2时,返回table_array 第二行的数值,以此类推。

Col_index_num为相对列号。

最左列为1,其右边一列为2,依此类推.Range_lookup为一逻辑值,指明函数HLOOKUP 查找时是精确匹配,还是近似匹配。

下面详细介绍一下VLOOKUP函数的应用。

简言之,VLOOKUP函数可以根据搜索区域内最左列的值,去查找区域内其它列的数据,并返回该列的数据,对于字母来说,搜索时不分大小写。

所以,函数VLOOKUP的查找可以达到两种目的:一是精确的查找。

二是近似的查找。

下面分别说明。

INDEX用于返回表格或区域中的数值或对数值的引用。

函数INDEX() 有两种形式:数组和引用。

数组形式通常返回数值或数值数组;引用形式通常返回引用。

(1)INDEX(array,row_num,column_num) 返回数组中指定单元格或单元格数组的数值。

Array为单元格区域或数组常数。

Row_num为数组中某行的行序号,函数从该行返回数值。

Column_num为数组中某列的列序号,函数从该列返回数值。

需注意的是Row_num 和column_num 必须指向array 中的某一单元格,否则,函数INDEX 返回错误值#REF!。

(2)INDEX(reference,row_num,column_num,area_num) 返回引用中指定单元格或单元格区域的引用。

Reference为对一个或多个单元格区域的引用。

Row_num为引用中某行的行序号,函数从该行返回一个引用。

Column_num为引用中某列的列序号,函数从该列返回一个引用。

需注意的是Row_num、column_num 和 area_num 必须指向 reference 中的单元格;否则,函数 INDEX 返回错误值 #REF!。

如果省略 row_num 和 column_num,函数 INDEX 返回由 area_num 所指定的区域。

用了几年的EXCEL,总感觉查找是一个很重要的应用,但往往初学者总是不知道用什么方式法完成查找,这里根据自己的使用习惯,循序渐进介绍三种方法:①VLOOKUP(初级)②VLOOKUP+MATCH(中级)③INDEX+MATCH(高级)希望能对朋友们有所帮助:一.创设情境:附件的例题中有两张工作表,表1和表2,现在要将表1中的“语文成绩”和“数学成绩”两项补充完整,数据来自表2。

二.问题延伸:如果真只是这么几个数据和这么两个字段,就算是一个个手动找也是快的,但现在我们要把学生信息放大到几千甚至上万条,要把需要补充的项目放大到几十甚至几百列。

这时,你还会考虑用手动的方法去查吗?显然不会!三.问题分析:我们先看看两张表中,有一个共同项——“姓名”,那么就可以利用“姓名”这项作为沟通两张表格的桥梁。

例如:到表2中的“姓名”列查找表1中的“王小二”,如果找到了,就把对应的语数成绩填到表1相应的单元格内。

四.应用公式:1.初级应用:根据这一思路,我们会想到一个函数:VLOOKUP(参数1,参数2,参数3,参数4);标准的说明我们可以教参EXCEL的帮助,这里按我自己的理解,简单介绍一下:参数2:是指定需要查找的区域。

如题应该是表2的A1:C9,而且一般情况下这个区域是固定不变的(特别情况除外),所以区域应该是绝对引用,应该写成“表2!$A$1:$C$9”参数1:是要在参数2所指定的区域首列中查找的值。

如题应该是表1中的姓名,如:“A2”参数3:是指定找到对应的姓名后需要在区域中提取的对应的列。

如题语文成绩应该是表2中的第2列,即“2”参数4:是查找时的匹配方式,这个参数为可选参数,可以不写,同时与本题无关,不再说明。

根据上面的分析,表1的C2中应该填入的公式为:=VLOOKUP(A2,表2!$A$1:$C$9,2);我完整的解释一下公式的执行思路:从表1中读取一个A2的值“王小二”,去跟表2中从A1到A9的9个值进行一一比较,值到找到第一个与“王小二”一样的值或是没有找到。

当找到与“王小二”一样的值之后,就锁定本条数据,然后返回本条数据相应列的值,如题设置就是返回第2列的值。

同理,在D2中应该填入的公式为:=VLOOKUP(A7,表2!$A$1:$C$9,3);2.中级应用:分析上面的的公式就会发现,“语文成绩”和“数学成绩”的公式不同,虽然只需要改一个参数,但如果字段一多,工作量也不小。

有办法解决吗?当然!我们再来分析两张表,发现字段的名称是完全一样的,即表1中的“语文成绩”和“数学成绩”两个字段名跟表2中的完全一样。

那是不是可以通过公式来自动获取列号呢?可以,这时我们会想到另一个函数,用它来替代VLOOKUP的参数3,就可以解决问题:MATCH(参数1,参数2,参数3);标准的说明我们可以教参EXCEL的帮助,这里按我自己的理解,简单介绍一下:参数2:指定要查找的行(或列)。

如题应该是行,即表2中的A1:C1,而且一般情况下这个区域是固定不变的(特别情况除外),所以区域应该是绝对引用,应该写成“表2!$A$1:$A$9”参数1:是要在参数2所指定的区域首列中查找的值。

如题应该是表1中的“语文成绩”,如:“C1”参数3:是查找时的匹配方式,本题中填“0”,意思为完全匹配。

根据上面的分析,表1的C2中应该填入的公式升级为:=VLOOKUP($A2,表2!$A$1:$C$9,MATCH(C$1,表2!$A$1:$C$1,0)),由于单元格的引用方式(绝对引用、相对引用、混合引用)不同,会引起不同的效果。

因此,公式升级后在引用方式上有所就动。

如果你的引用方式不是很了解,那得补一下这方面的知识,这里不再细说。

下面我解释一下公式中:MATCH(C$1,表2!$A$1:$C$1,0)的执行思路:从表1中读取一个C1的值“语文成绩”,去跟表2中从A1到C1的3个值进行一一比较,值到找到第一个与“语文成绩”一样的值或是没有找到。

当找到与“语文成绩”一样的值之后,即返回该单元格在区域中的序号。

3.高级应用:分析VLOOKUP这个函数我们发现,它只能在指定区域的首列中查找指定的值(HLOOKUP,这个函数只能在指定区域的首行中查找指定的值),在处理实际问题时会带来一定的局限性。

现在介绍两个函数的合组应用,可以实现在区域的任何行和任何列中进行同时查询,最终确定返回单元格的行列坐标。

这项应该的主函数就是:INDEX(参数1,参数2,参数3);标准的说明我们可以教参EXCEL的帮助,这里按我自己的理解,简单介绍一下:参数1:是指定需要查找的区域。

如题应该是表2的A1:C9,而且一般情况下这个区域是固定不变的(特别情况除外),所以区域应该是绝对引用,应该写成“表2!$A$1:$C$9”参数2和参数3:是相对于参数1指定区域的返回单元格行列坐标。

相关主题