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与VLOOKUP
HLOOKUP用于在表格或数值数组的首行查指定的数值,并由此返回表格或数组当前列中指定行处的数值。
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。
二.问题延伸:如果真只是这么几个数据和这么两个字段,就算是一个个手动也是快的,
希望能对朋友们有所帮助:
一.创设情境:附件的例题中有两张工作表,表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:是查时的匹配方式,这个参数为可选参数,可以不写,同时与本题无关,不再说
三.问题分析:我们先看看两张表中,有一个共同项——“姓名”,那么就可以利用“姓名”这项作为沟通两张表格的桥梁。例如:到表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,而且一般情况下这
根据上面的分析,表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这个函数我们发现,它只能在指定区域的首列中查指定的值(HLOOKU
参数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这个函数我们发现,它只能在指定区域的首列中查指定的值(HLOOKU
P,这个函数只能在指定区域的首行中查指定的值),在处理实际问题时会带来一定的局限性。现在介绍两个函数的合组应用,可以实现在区域的任何行和任何列中进行同时查询,最终确定返回单元格的行列坐标。这项应该的主函数就是:INDEX(参数1,参数2,参数3);标准的说明我们可以教参EXCEL的帮助,这里按我自己的理解,简单介绍一下:
参数1:是指定需要查的区域。如题应该是表2的A1:C9,而且一般情况下这个区域是固定不变的(特别情况除外),所以区域应该是绝对引用,应该写成“表2!$A$1:$C$9”
参数2和参数3:是相对于参数1指定区域的返回单元格行列坐标。如题如果要返回表1中“王小二”的“语文成绩”,应该在表1的C1中填入:=INDEX(表2!$A$1:$C$9,6,2),但很显然,如果坐标需要手动指定,那么这个函数几乎没什么用。现在就要请中级应用中的MATCH这个函数来帮忙了。用它来替代参数2和参数3。公式升级如下:
=INDEX(表2!$A$1:$C$9,MATCH($A2,表2!$A$1:$A$9,0),MATCH(D$1,表2!$A$1:$C$1,0))
参数1:是指定需要查的区域。如题应该是表2的A1:C9,而且一般情况下这个区域是固定不变的(特别情况除外),所以区域应该是绝对引用,应该写成“表2!$A$1:$C$9”
参数2和参数3:是相对于参数1指定区域的返回单元格行列坐标。如题如果要返回表1中“王小二”的“语文成绩”,应该在表1的C1中填入:=INDEX(表2!$A$1:$C$9,6,2),但很显然,如果坐标需要手动指定,那么这个函数几乎没什么用。现在就要请中级应用中的MATCH这个函数来帮忙了。用它来替代参数2和参数3。公式升级如下:
=INDEX(表2!$A$1:$C$9,MATCH($A2,表2!$A$1:$A$9,0),MATCH(D$1,表2!$A$1:$C$1,0))
矢量形式的 LOOKUP
矢量形式的LOOKUP在一行或一列区域(称为矢量)中查值,然后返回另一行或一列区域中相同位置处的值。如果要指定其中包含要匹配的值的区域,请使用这种形式的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返回的值可能不正确。大写和小写文本是等效的。
重要说明: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 错误值。
示例
收起该表格展开该表格
A | B | |
1 | 频率 | 颜 |
2 | 4.14 | red |
3 | 4.19 | orange |
4 | 5.17 | yellow |
5 | 5.77 | green |
6 | 6.39 | blue |
收起该表格展开该表格
公式 | 说明(结果) |
=LOOKUP(4.91,A2:A6,B2:B6) | 在列 A 中查 4.19,然后返回列 B 的同一行中的值 (orange)。 |
=LOOKUP(5.00,A2:A6,B2:B6) | 在列 A 中查 5.00,然后返回列 B 的同一行中的值 (orange)。 |
=LOOKUP(7.66,A2:A6,B2:B6) | 在列 A 中查 7.66,匹配次小值 (6.39),然后返回列 B 的同一行中的值 (blue)。 |
=LOOKUP(0,A2:A6,B2:B6) | 在列 A 中查 0,然后返回一个错误,原因是 0 小于lookup_vector A2:A7 中的最小值 (#N/A)。 |
回到顶端
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论