下图表中有两列数据,第一列是手机号码,第而列是姓名,我们需要根据指定的某个号码在这两列中找到对应的姓名,VLOOKUP函数结果如下图: 我们要查找的手机号码“181****5313”对应的姓名明明是“李文新”,可是为什么VLOOKUP函数的结果却是“李华强”呢?这个VLOOKUP函数语法没错啊,确实是精确匹配啊。 对于Excel函数比较熟的朋友可能立刻就会想到,VLOOKUP要查找的条件是“181****5313”,里面有4个星号“*”,而星号在函数中作为条件会默认为通配符,表示任意字符,所以VLOOKUP函数会认为18194935313=181****5313,那么我们要查找这种含有统配符的条件就需要特殊处理一下,在条件前面用&连接符连接“~”,于是聪明的人立刻给出了另一个公式: 公式是改变了,可是结果为什么依然还没有改变,还是原来的结果呢?我们再仔细观察一下数据源就会发现,这些手机号码所在的单元格左上角都有一个绿色的小三角,说明这些数值都是文本型的数值,所以需要将文本型数值转换成数值型的数值,如下面动画: 还有一种情况,数据源里面既有文本型数值,也有数值型数值,我们查找的条件中也是两种数值类型混杂,而且由于涉及多部门,这些数据都不能随便转换格式,这个时候如果仅仅只用一个VLOOKUP函数我们就很难解决问题了,如下图: 因为不能转换数值格式,所以一个VLOOKUP函数确实不好解决,不过既然一个解决不了,那两个总可以了吧,别忘了咱们还有IFERROR函数,可以让我们错了也有一次重来的机会 公式:=IFERROR(VLOOKUP(--D2,$A$2:$B$11,2,0),VLOOKUP(D2&'''',$A$2:$B$11,2,0)) PS:--D2表示将数值类型数值化,D2&''''表示将数值类型文本化。 大家是否觉得这很复杂呢?有没有不需要处理通配符,也不需要转换数值格式的公式呢?答案是有的,请看下图: 公式:=LOOKUP(1,0/(A2:A11=D2),B2:B11) |
|