同事要求我做一个Excel公式:在某位置输入一个值后能自动在指定的区域中搜索相同的内容,并得出对应(同一行中其它列)单元格的值,因此需要用到vlookup函数。先抄一段vlookup的语法说明:
在表格数组的首列查找值,并由此返回表格数组当前行中其他列的值。VLOOKUP 中的 V 表示垂直方向。当比较值位于需要查找的数据左边的一列时,可以使用 VLOOKUP,而不用 HLOOKUP(H是水平方向)。
语法
VLOOKUP(lookup_value,table_array,col_index_num,range_lookup)Lookup_value 为需要在表格数组第一列中查找的数值。Lookup_value 可以为数值或引用。若 lookup_value 小于 table_array 第一列中的最小值,VLOOKUP 将返回错误值 #N/A。
Table_array 为两列或多列数据。请使用对区域的引用或区域名称。table_array 第一列中的值是由 lookup_value 搜索的值。这些值可以是文本、数字或逻辑值。不区分大小写。
Col_index_num 为 table_array 中待返回的匹配值的列序号。Col_index_num 为 1 时,返回 table_array 第一列中的数值;col_index_num 为 2,返回 table_array 第二列中的数值,以此类推。如果 col_index_num 小于 1,VLOOKUP 返回错误值 #VALUE!。如果 col_index_num 大于 table_array 的列数,VLOOKUP 返回错误值 #REF!。
Range_lookup 为逻辑值,指定希望 VLOOKUP 查找精确的匹配值还是近似匹配值:
如果为 TRUE(非零数字即为TRUE) 或省略,则返回精确匹配值或近似匹配值。也就是说,如果找不到精确匹配值,则返回小于 lookup_value 的最大数值。table_array 第一列中的值必须以升序排序;否则 VLOOKUP 可能无法返回正确的值。
如果为 FALSE(数字0则为FALSE),VLOOKUP 将只寻找精确匹配值。在此情况下,table_array 第一列的值不需要排序。如果 table_array 第一列中有两个或多个值与 lookup_value 匹配,则使用第一个找到的值。如果找不到精确匹配值,则返回错误值 #N/A。(一般我们用FALSE,当然希望是精确匹配,而且排序也麻烦)
比如我们要在工作表的A2:C4范围内的A列中搜索预先输入在E2单元格的内容,然后得出搜索结果同一行的C列上的值,就可以写出如下公式:
=vlookup(E2,A2:C4,3,FALSE) 或 =vlookup(E2,A2:C4,3,0)
C列是搜索区域中的第3列,也正如上面语法中说的,搜索对象是引用,也可以是具体的内容:如字符、数字等。
当然,有很多时候,我们要搜索的内容并不是在指定区域的第一列,而要取得的对应值反正是在第一列上,这时候我们就要用到vlookup的逆向用法。如我们要在工作表的A2:C4这一范围中的C列上查找相应值,然后得出同一行上A列的内容,则公式为:
=vlookup(E2,IF({1,0},C2:C4,A2:A4),2,FALSE)
这里用一个IF函数要形成一个内存中的数组,这个内存中的数组为{C2:C4,A2:A4},实际是把工作表中的A与C列的顺序倒过来,然后再应用vlookup函数(这就是逆向,实际查找的还是第一列)。另外用CHOOSE函数也能有同样效果,如=vlookup(E2,CHOOSE({1,2},C2:C4,A2,A4),2,FALSE) 简单的说就中{1,2}=1时,CHOOSE的值就是C2:C4,{1,2}=2时,CHOOSE的值就是A2:A4,具体语法就不说了。
>> 除非说明均为原创,如转载请注明来源于http://www.stormcn.cn/post/204.html