
案例:第2章函数进阶\[2.1查找引用函数进阶.xlsx]根据简称查全称
实现效果:
根据D列的简称,查A列是否有相应的全称,见表,“有”显示全称,“没有”显示“未出现”。

解决方案:
Step1. 问题分析。
直接用VLOOKUP是不行的,参数lookup_value与查找表根本不同;这也不是模糊查找, VLOOKUP能够进行的模糊查找是在数据区间内的查找。
但简称和全称之间是一种包含关系,如何体现这种包含关系呢?
这让我们想到了通配符“*”和“?”,“*”代表任意位数的任意字符;“?”代表任意一位字符,这就是说“*简称*”即可代表全称了。
没有出现的单元格需要表示为:“未出现”,出现的就显示出现的结果,这需要用到IFERROR或IF和ISERROR函数。
Step2. 写函数。
IFERROR是由“IF(ISERROR(…”结构演变而来,比“…”结构简单,但仅限于Excel2007及以上版本使用,是Excel 2007版才新增加的函数,这也就意味着Excel2003版不能使用这个函数,也意味着这个函数一旦进入Excel2003版或文件保存为“*.xls”文件格式,这个函数将报“#NAME?”错误。
IFERROR语法为:IFERROR(value,value_if_error),value检查是否存在错误的参数。value_if_error公式的计算结果为错误时要返回的值。计算得到的错误类型有:#N/A、#VALUE!、#REF!、#DIV/0!、#NUM!、#NAME? 或 #NULL!。
在E2单元格输入:=IFERROR(VLOOKUP("*"&D2&"*",$A$2:$B$21,1,0),"未出现"),双击填充即可。公式的含义是“如果VLOOKUP结果是错误值就返回‘未出现’,否则就显示VLOOKUP结果。”
如果是Excel 2003版,注意函数应改写为=IF(ISERROR(VLOOKUP("*"&D2&"*",$A$2:$B$21,1,0)),"未出现",VLOOKUP("*"&D2&"*",$A$2:$B$21,1,0))。
以上案例摘自:助力东方Excel同步培训教材《Excel高级数据处理(II)》,工作中遇到的任何VLOOKUP查不到的情况,这本书都有答案!