|
楼主 |
发表于 2010-7-27 17:10
|
显示全部楼层
函数II-1
先说一下老朋友VLOOKUP吧。
VLOOKUP(lookup_value,table_array,col_index_num,range_lookup)
精确查找时顺序运算;模糊查找时类似二分法策略
1、写给对第4参数“省略”还是“简化”,模糊查找还是精确查找有疑惑的朋友
首先,第4参数为0或FALSE表示精确匹配;为<>0或TRUE或省略表示模糊匹配,要求升序排列,否则答案可能错误。注意使用模糊匹配就要进行排序;
其次,说下省略和简化的区别。省略第4参数是指写完第3参数后不写逗号(此时模糊匹配),如果写了逗号就是简化(此时精确匹配)
2、VLOOKUP在精确查找时支持通配符
VLOOKUP通配符.rar
(3.33 KB, 下载次数: 49)
在第4参数为0或者FALSE时,第1参数可以使用"*"、"?"来通配;模糊查找时会把*和?当做文本而非通配符处理;
3、当需要按照多个并列条件查找时;
添加辅助列或者用"&"合并多条件后作为一个查询值
4、从右往左查询;
利用IF{1,0}或者choose函数构建相应的内存数组
5、第3参数可以根据引用列自动调整;
利用COLUMN函数进行调整,方便批量填充,如用COLUMN(),COLUMN(A:A)形式,如果需要偏移,在此基础上加减N即可,如COLUMN()+N
6、对查找结果出现#N/A值(引自apolloh)
为什么VLOOKUP或MATCH的查找结果出现#N/A值? http://www.exceltip.net/thread-880-1-1-25594.html
精确查找时,查找值在查找范围列中不存在。
近似查找时,查找值小于查找范围列的所有值。
查找值与查找范围列的数据类型不匹配,如文本型数字和数值型数字,虽然外形相同,但实质却不同。
查找值看似存在于查找范围的数据中,但有一方含有不可见字符,如空格、换行符或其他无法显示的字符。
Excel 中有哪些错误值,分别是如何产生的? http://www.exceltip.net/thread-332-1-1-25594.html
7、如果查找到多个匹配值,全部显示;
单纯利用VLOOKUP无法实现,需要用到数组公式
显示查找到的多个值.rar
(11.42 KB, 下载次数: 51)
- =INDEX($B:$B,SMALL(IF($A$1:$A$10=$C$1,ROW($1:$10),4^8),ROW(A1)))&""
复制代码 变换C1数值可看到效果。
8、用VLOOKUP构建内存数组
VLOOKUP构建内存数组.rar
(3.78 KB, 下载次数: 35)
关键在于把握好第3参数,如附件中- =VLOOKUP("*",$A$1:$L$1,(ROW(1:6)-1)*2+TRANSPOSE(ROW(1:2)),)
复制代码 9、VLOOKUP返回的是查找值而非引用,此点与INDEX+MATCH组合区别
在引用动态图片的时候用INDIRECT和INDEX+MATCH实现,但用VLOOKUP则会报错,就是由此原因所致;
10、使VLOOKUP实现调用多表查询(用为成果展示吧)
vlookup多表调用2003.rar
(18.45 KB, 下载次数: 44)
步骤1、定义名称:name- =REPLACE(GET.WORKBOOK(1),1,FIND("]",GET.WORKBOOK(1)),)&T(NOW())
复制代码 步骤2:C2数组公式- =IF(ISERROR(VLOOKUP($B2,INDIRECT("'"&INDEX(name,MATCH(0,0/COUNTIF(INDIRECT("'"&name&"'!A:A"),$B2),))&"'!A:I"),2,)),"",VLOOKUP($B2,INDIRECT("'"&INDEX(name,MATCH(0,0/COUNTIF(INDIRECT("'"&name&"'!A:A"),$B2),))&"'!A:I"),2,))
复制代码 如果是2007可以用IFERROR:- =IFERROR(VLOOKUP($B2,INDIRECT("'"&INDEX(name,MATCH(0,0/COUNTIF(INDIRECT("'"&name&"'!A:A"),$B2),))&"'!A:I"),2,),"")
复制代码 我对excel工作表产生的多维空间的理解 http://www.exceltip.net/thread-9288-1-1-25594.html
[ 本帖最后由 lrlxxqxa 于 2010-7-27 23:51 编辑 ] |
|