vlookup怎么实现向左查询?
我们知道vlookup的查询方式是向右查询,你说你想向左查询,能不能实现?答案是可以的,下面就说说是怎么实现的?
假如下表是一个产品的销量--价格表,要根据SKU查询出对应的款号和总价,你会怎么做呢?你可能会想把SKU列移动到左边第一列,然后用vlookup查找,这样是可以的,但是如果要求不能改动原表,又该怎么办呢?
方法有2种,但本质是一样的,都是重新构建查询区域,也就是vlookup的第二参数,要自己重新构建。
-第1种方法-
if函数重构查询区域
先写公式=VLOOKUP(F2,IF({1,0},D2:D10,A2:A10),2,),这样就查找到款号了。你发现vlookup第二参数是IF({1,0},D2:D10,A2:A10),这里是if函数的数组用法,意思是当条件成立时,返回SKU列;当条件不成立时,返回款号列,这样就重新构建了区域,构建后的区域把SKU列作为第一列,把款号列作为第二列。接下来就是vlookup的常规用法了。
可以验证一下=IF({1,0},D2:D10,A2:A10)的结果。如下,也可以在公式中按F9查看,自行验证。
那总价也好算了,分别向左查出销量和价格,再相乘,公式为=VLOOKUP(F2,IF({1,0},D2:D10,B2:B10),2,)*VLOOKUP(F2,IF({1,0},D2:D10,C2:C10),2,)。
这里算总价还有另一种做法,上一步已经根据SKU查询出款号了,现在可以根据款号查出销量和价格,公式为=VLOOKUP(G2,A2:C10,{2,3},),这里我用了数组,把销量和价格同时查出。可以按F9查看。
然后再用PRODUCT相乘,最后把G2单元格的公式代入H2就完成了。公式为=PRODUCT(VLOOKUP(VLOOKUP(F2,IF({1,0},D2:D10,A2:A10),2,),A2:C10,{2,3},)),shift+ctrl+enter三键结束
-第2种方法-
choose函数重构查询区域
先写公式=VLOOKUP(F2,CHOOSE({1,2},D2:D10,A2:A10),2,),你可能发现也是vlookup第二参数改变了,CHOOSE({1,2},D2:D10,A2:A10)和上面的if构建的区域是一样的。意思是当为1时,返回SKU列;当为2时,返回款号列。这样就组成一个新的区域。
总价可以这样算,公式为=PRODUCT(VLOOKUP(F2,CHOOSE({1,2,3},D2:D10,B2:B10,C2:C10),{2,3},)),意思是先用choose构建一个3列的区域,第一列为SKU列,第二列为销量列,第三列为价格列;然后在这个区域中查询同时返回第2和第3列,也就是销量列和价格列;最后用product相乘,三键结束。
ps:关于vlookup的向左查询,就说这2种方法。实现向左查询还有其他函数可以实现。下面举个列子,写一下公式,就当做延伸。公式为=INDEX(A2:A10,MATCH(F2,D2:D10,))
你还有其他的方法吗?