简单做一个小表格,第一列序号、第二列姓名、第三列数值
显然我这里都乱序了,是为了更好的展示
vlookup函数是查找函数的一种,有四个参数:
VLOOKUP(lookup_value,table_array,col_index_num,range_lookup)
lookup_value:与要找到的数值的横坐标相同的一个序号,也就是要找到的那一行在整张表中第一列的数值
常常是一个确定的、有顺序和实际意义的值,比如学生的学号,工作单位的部门名称等等
table_array:查找的表格范围,也就是我们指定这个函数在哪个范围内查找
需要注意我们默认第一个参数lookup_value是在table_array中表格的第一列查找的
col_index_num:找到指定的行数后,我们还需要目标数值的列数,也就是纵坐标
这里这个参数就是指定我们需要改行的第几个数值
range_lookup:精确查找还是模糊查找。注意这里的模糊和我们平常理解的不太一样,下面会具体展示
首先,我们用精确查找找到序号为2的情况下对应的数值:
结果为12
也就是说,尽管我们有两个序号为2的数值,但是在实际的使用中只能找到第一个
这是因为精确查找是按照从上往下的方式查找的
如果换成模糊查找呢?
结果为19
这是因为模糊查找用的是二分法
也就是说,不管你的第一列是否按照一定的顺序排列,函数都会认为你是按照从小到大的顺序排列的
然后,函数会先选择中央的数据进行比较,并按照比较的结果决定向上找还是向下找
比如本次查找,序号是2
中央的位置是1,比2小,函数就会默认向下查找,
后三个中间为4,比2大,再向上
这样就找到了2,对应为19
所以,模糊查找不是查找的条件模糊,而是查找的时候顺序发生了变化
模糊查找能不能找到近似值呢?
比如我们这里指定找到9
显然第一列是没有的
结果是多少?5
想不到吧,甚至不是和9最接近的10对应的数值8
这同样和二分法的查找原理有关
模糊查找在找不到的时候会停留在最近的一个值,这个最近是按照查找顺序来判断的
这以上的查找中先找到4,然后才向下判断10不行
所以是最后选择了4
最后,除非数据量太大,个人感觉还是建议精确查找。