玩转Excel |
您所在的位置:网站首页 › function返回值 › 玩转Excel |
VLOOKUP是Excel中常用的一个查找函数,它可以从一个数据集中查找指定的值,并返回与该值匹配的结果。VLOOKUP函数的第一个参数是要查找的值,第二个参数是要在哪个数据范围内进行查找,第三个参数指定要返回的结果在该数据范围中的列号。 默认情况下,VLOOKUP函数是从左向右查找匹配的。也就是说,它会在数据范围的第一列中查找要查找的值,如果找到了匹配的值,则返回该值所在行中指定列号的单元格的值。 举例说明,现有如下数据表格, ABCD1名称单价(元/KG)销量(KG)2苹果10203香蕉12254柑橘8305梨子640如果我们想要查找柑橘的销量,可以在空白单元格输入: =VLOOKUP("柑橘",A2:C5,3,FALSE) 即可得到返回值30。 这里,我们详细分解一下函数的运算过程。 "柑橘",表示函数的查找值为"柑橘"; A2:C5,这一部分实际上构造了一个二维数组{"苹果",10,20;"香蕉",12,25;"柑橘",8,30;"梨子",6,40},这个数组有4个元素,每个元素有3个数据。 首先,函数检查要查找的值,即“柑橘”。 然后,函数在数组{"苹果",10,20;"香蕉",12,25;"柑橘",8,30;"梨子",6,40}中从左到右查找第一个与要查找的值匹配的单元格。 函数从数组的第一行开始查找。在第一行中,第一个单元格是“苹果”,这与要查找的值“柑橘”不匹配,因此继续查找下一个单元格。 函数在第二行中查找。第一个单元格是“香蕉”,这也不匹配要查找的值。继续查找下一个单元格。 函数在第三行中查找。第一个单元格是“柑橘”,这是要查找的值。因此,函数返回该单元格所在行的第三个单元格的值,即“30”。 如果函数无法找到匹配的单元格,则根据最后一个参数(即“FALSE”)返回#N/A错误。 从上述函数运算过程可以看出,查找值必须为被查找区域的首列数据,VLOOKUP函数才能正常运算。如果数据表格变换一下格式,如下 ABCDE1单价(元/KG)销量(KG)名称21020苹果31225香蕉4830柑橘5640梨子这种情况下,我们再按照名称直接使用VLOOKUP函数查找“柑橘”的销量就无法实现了。这是因为A2:C5构造的数组为{10,20,"苹果";12,25,"香蕉";8,30,"柑橘";6,40,"梨子"},由于这4个元素的首个数据分别为10,12,8,6,函数无法查询到“柑橘”这个数据,所以函数返回值#N/A。 这是不是说这种格式的数据,我们就无法使用VLOOKUP函数了呢?不是的,虽然我们无法改变VLOOKUP函数按照每个元素的首个数据进行匹配的特性,但是我们可以通过特殊的方法重新构造数组使其满足VLOOKUP函数的查找特性。这个方法就是使用IF函数构造一个新的数组。 我们可以在空白单元格输入下列公式:=VLOOKUP("柑橘",IF({1,0},C2:C5,B2:B5),2,FALSE) 函数返回值为“30”,结果正确。 我们再详细分解一个这个函数的计算过程。在这之前,我们先看一下IF函数特点。 IF函数有三个参数,分别为logical_test, value_if_true, value_if_false。 logical_test:必选参数,代表判断条件; value_if_true:可选参数,代表如果判断条件为true时的返回值; value_if_false:可选参数,代表如果判断条件为false时的返回值。 那么,IF({1,0},Val_1, Val_2)又是代表什么意思呢?用下面的例子进行说明。 函数的运算结果为 所以,IF({1,0},Val_1, Val_2)实际上构造了一个数组{Val_1,Val_2}。 我们再返回到例题, ABCDE1单价(元/KG)销量(KG)名称21020苹果31225香蕉4830柑橘5640梨子=VLOOKUP("柑橘",IF({1,0},C2:C5,B2:B5),2,FALSE) IF({1,0},C2:C5,B2:B5)实际上也是构造了一个数组{"苹果",20;"香蕉",25;"柑橘",30;"梨子",40},这样我们就发现包含“柑橘”的列就变成被查找区域的第一列了,被查找值“销量”在数组的第二列,所以VLOOKUP函数的返回列数为2。这样VLOOKUP函数就可以正常使用了。 总结: VLOOKUP函数实现反向查找的关键是,使用IF({1,0},Val_1,Val_2)这个形式构造一个数组{Val_1,Val_2},使得查找值Val_1处于数组的首列,这样就可以使用VLOOKUP进行查找了。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |