最近在查攻略的过程中看见大佬使用vlookup函数计算游戏中资源产出比,感觉很厉害于是就开始学习vlooup函数的用法。
在学习过程中发现vlookup中会嵌套其他函数
VLOOKUP(D2,IF({0,1},A2:A8,B2:B8),2,FALSE)
其他三个参数都很好理解,除了这个IF({0,1} ,A2:A8,B2:B9)不太理解。
它的作用就是将A2:A8和B2:B8这两个区域进行调换了。
首先介绍一下 vlookup函数的用法。
一共是四个参数,按顺序是
- 查阅值(lookup_value),要查找的值所在单元格编号。
- 包含查阅值的区域(table_array),查阅值所在的区域。
- 区域中包含返回值的列号(col_index_num),区域中包含返回值的列号。
- 是否近似匹配(range_lookup)。填写TRUE或者FALSE。如果需要返回值的精确匹配也就是完全一致,则填入FALSE;如果需要开起近似匹配则填入TRUE。可选参数。默认值为TRUE。
举个例子,
图中查找区域表表示为
A2:C8
所以上面的函数解释起来就是,去IF({0,1},A2:A8,B2:B8)这个区域中精确查找是否有值等于D2单元格的值。如果有则返回包含查阅值的区域第二列的值,没有则返回#N/A。
那么这个
IF({0,1},A2:A8,B2:B8)
是什么意思呢?
首先IF函数是这样使用的。一共是三个参数
- 表达式
- 表达式为真的时候的返回值(可以是一个区域)
- 表达式为假的时候的返回值(可以是一个区域)
所以{0,1}是一个表达式。然后A2:A8是上面表达式为真返回值。B2:B8是表达式为假的返回值。
故if函数执行了两次。
IF(0,A2:A8,B2:B8)
IF(1,A2:A8,B2:B8)
第一if函数的结果是B2:B8,第二个if函数的结果是A2:A8。最后再把它们组合起来。
{"一",1;"二",2;"三",3;"四",4;"五",5;"六",6;"日",7}
相当于把A列和B列对调了。
对调前:
对调后:
。
那么为什么要把这两列对调呢?原来vlookup函数第二个参数只能获取所选区域从左到右的内容(查找区域首列是查阅值比对的对象)。对换列前,数字是在名字前面的。如果查找范围设置为A2:B8,查找值为二。那么得到结果是#N/A。但是对换顺序后,因为首列是名字,所以可以得到数字列的值(因为数字列排在名字列后面)。
从实际效果来看就是根据名字查到了对应的编号。
VLOOKUP(D2,IF({0,1},A2:A8,B2:B8),2,FALSE)
最后回到最初的问题来。在A,B列对调后的区域查找是否有值等于D2。
结果是1。