Excel公式和函数  查函数
一般情况下,Excel的查函数中均有参数Lookup_value,它表示要查的数值;而参数Lookup_array和Table_array则表示需要在其中查数据的数据清单。另外,在某些查函数中还会有逻辑值参数,表示查询或者匹配的类型。本节就来介绍查函数的使用方法。
1LOOKUP函数
使用LOOKUP函数可以从单行、单列区域或者从某个数组中返回值。该函数具有向量和数组两种语法形式:
向量形式
向量形式是指仅包含一行或者一列的单元格区域。LOOKUP函数的向量形式在单行或者单列区域中查值,然后返回第二个单行或者单列区域中相同位置的值。
语法:(lookup_value, lookup_vector, result_vector)
其中,各参数的意义如下所示:
Lookup_value
该参数的值可以是数字、文本、逻辑值、名称或者对值的引用,它表示LOOKUP函数在第一个向量中需要搜索的值;
Lookup_vector
该参数表示仅包含一行或者一列的单元格区域,其值可以是文本、数字或者逻辑值;
Result_vector
该参数的大小必须与参数Lookup_vector相同,它也表示仅包含一行或者一列的单元格区域。
数组形式
LOOKUP函数的数组形式在数组的第一行或者第一列中查指定的值,并返回数组最后一行或者最后一列内同一位置的值。当要匹配的值位于数组的第一行或者第一列时,即可使用LOOKUP函数的这种形式。
语法:LOOKUP (lookup_value, array)
其中,参数Lookup_value表示要在数组中搜索的值,其值可以是数字、文本、逻辑值、名称或者是对值的引用;参数Array表示包含文本、数字或者逻辑值的单元格区域,其值用于与参数Lookup_value进行比较。
例如,如图6-1所示为某书店最近销售的图书目录,要求以要查询的图书编号为查询数,并与图书目录中的“编号”一列进行对比,查询到匹配文本后,将“名称”和“单价”列中对应的数据提取出来。
图6-1  图书目录信息
首先,查询编号为6的图书名称。选择B34单元格,并以向量形式插入LOOKUP函数。在弹出的【函数参数】对话框中,设置参数Lookup_value为A34;参数Lookup_vector为A3:A31;参数Result_vector为B3:B31,单击【确定】按钮,即可在B34单元格中显示编号为6的图书名称,如图6-2所示。
然后,选择C34单元格,在【编辑栏】中输入“=LOOKUP(A34,A3:A31,C3:C31)”公式,即可在C34单元格中显示该图书的单价,如图6-3所示。
 
图6-2  返回图书名称                  图6-3  返回图书价格
在使用向量形式的LOOKUP函数时,需要注意以下几点:
参数Lookup_vectop中的值必须以升序的顺序放置,如-1,0,1,2,…,否则,LOOKUP函数可能无法提供正确的值;但该参数中,大写文本和小写文本是相同的;
如果LOOKUP函数不到参数Lookup_value,则它与参数Lookup_vector中小于或者等于Lookup_value的最大值相匹配;
如果参数Lookup_value小于参数Lookup_vector中的最小值,那么LOOKUP函数将返回错误值#N/Alookup函数返回值不对
 
一般情况下,用户可以使用HLOOKUP或者VLOOKUP函数而不是LOOKUP的数组形式,LOOKUP函数的数组形式是为了与其他电子表格程序兼容而提供的。
2HLOOKUP
当比较值位于数据表的首行,并且要查下面给定行中的数据时,可以使用HLOOKUP函数来解决,其中的H表示“行”。该函数可以在表格或数值数组的首行查指定的数值,并在表格或数组中指定行的同一列中返回一个数值。
语法:HLOOKUP (lookup_value, table_array, row_index_num, range_lookup)
其中,各参数的功能作用如下所示:
Lookup_value
该参数表示需要在数据表第一行中进行查的数值,其值可以是数值、引用或者文本字符串;
Table_array
该参数表示要查数据的数据表,使用对区域或者区域名称的引用;
Row_index_num
该参数为Table_array中待返回匹配值的行序号。当其值为1时,返回参数Table_array第一行的数值;当其值为2时,返回参数Table_array第二行的数值,以此类推。如果参数Row_index_num的值小于1,则HLOOKUP函数返回错误值#VALUE!;若其值大于参数Table_array的行数,该函数将返回错误值#REF!
Range_lookup
该参数是一个逻辑值,表明HLOOKUP函数查时是精确匹配或者近似匹配。如果其值为TRUE或者被省略,则返回近似匹配值,也就是说,如果不到精确匹配值,则返回小于Lookup_value的最大数值;如果Lookup_valueFALSEHLOOKUP函数将查精确匹配值,如果不到,则返回错误值#N/A
例如,某公司要向客户传达订单,通过不同的配送方式会产生不同的费用,使用HLOOKUP函数使“订单明细表”中的费用与配送方式的收费情况保持一致。
选择D7单元格,在【编辑栏】中输入“=HLOOKUP(C7,A2:D3,2,FALSE)”公式,即可返回S01订单的费用,如图6-4所示。
然后,将公式修改为“=HLOOKUP(C7,$A$2:$D$3,2,FALSE)”,并向下拖动其填充柄,将公式复制到D8至D12单元格区域,其计算结果如图6-5所示。
 
图6-4  S01订单的费用                图6-5  修改并复制公式
在使用HLOOKUP函数时,需要注意以下几点:
参数Table_array第一行的数值可以为文本、数字或逻辑值;
如果参数Range_lookup的值为TRUE,则参数Table_array第一行的数值必须按升序排列,否则,HLOOKUP函数将不能给出正确的数值;如果其值为FALSE,参数Table_array将不必进行排序;
文本不区分大小写;
如果HLOOKUP函数不到参数Lookup_value,且Range_lookup的值为TRUE,则使用小于Lookup_value的最大值;
如果HLOOKUP函数小于Table_array第一行中的最小数值,HLOOKUP函数将返回错误值#N/A
如果参数Range_lookup的值为FALSE,并且参数Lookup_value的值为文本,则可以在Lookup_value中使用通配符、问号和星号。
3VLOOKUP函数
当比较值位于需要查的数据左边的一列时,可以使用VLOOKUP函数,其中的V表示垂直方向。该函数可以在表格数组的首列查指定的值,并由此返回表格数组当前行中其他列的值。
语法:VLOOKUP (lookup_value, table_array, col_index_num, range_lookup)
其中,各参数的功能作用如下所示:
Lookup_value
该参数为需要在表格数组第一列中查的数值,其值可以为数值或引用。若其值小于参数Table_array第一列中的最小值,那么VLOOKUP函数将返回错误值#N/A
Table_array
该参数表示两列或多列数据,它使用对区域或区域名称的引用。该参数第一列中的值是由参数Lookup_value搜索的值,这些值可以是文本、数字或逻辑值,其中文本不需要区分大小写。
Col_index_num
该参数为Table_array中待返回匹配值的列序号。当其值为1时,返回Table_array第一列中的数值;当其值为2时,返回Table_array第二列中的数值,以此类推。如果参数Col_index_num的值小于1VLOOKUP函数将返回错误值#VALUE!;若其值大于Table_array的列数,则返回错误值#REF!
Range_lookup
该参数为一个逻辑值,指定VLOOKUP函数要查的是精确匹配值还是近似匹配值。
例如,在“图书目录”中,选择B35单元格,插入VLOOKUP函数。在【函数参数】对话框中,设置参数Lookup_value为A35;参数Table_array为A2:C31;参数Col_index_num为2,即可返回编号为9的图书名称,如图6-6所示。
然后,选择C35单元格,在【编辑栏】中输入“=VLOOKUP(A35,A2:C31,3)”公式,并按Enter键,即可返回编号为9的图书价格,如图6-7所示。
 
图6-6  使用VLOOKUP函数返回名称  图6-7  使用VLOOKUP函数返回单价
LOOKUP函数的数组形式与HLOOKUP和VLOOKUP函数非常相似。三者之间的区别在于:
HLOOKUP函数在第一行中搜索Lookup_value;VLOOKUP函数在第一列中搜索;而LOOKUP函数根据数组维度进行搜索。
另外,还需要注意以下几点:
如果数组的列数多于行数,LOOKUP函数将会在第一行中搜索参数Lookup_value的值;
如果数组的行数与列数相等,或者行数多于列数,则LOOKUP函数将会在第一列中进行搜索;
使用HLOOKUPVLOOKUP函数,可以通过索引以向下的方式搜索,但是LOOKUP始终选择行或列中的最后一个值。
4GETPIVOTDATA函数
如果报表中的汇总数据可见,则可以使用GETPIVOTDATA函数从数据透视表中检索汇总数据。该函数用于返回存储在数据透视表中的数据。
语法:GETPIVOTDATA (data_field, pivot_table, field1, item1, field2, item2,...)

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