瑞星卡卡安全论坛

首页 » 技术交流区 » 系统软件 » 查找和引用函数(转)
不可再生的缘 - 2006-9-11 20:38:00
先讲VLOOKUP之基础篇

精确查找

语法
VLOOKUP(lookup_value,table_array,col_index_num,range_lookup)

Lookup_value  为需要在表格数组 (数组:用于建立可生成多个结果或可对在行和列中排列的一组参数进行运算的单个公式。数组区域共用一个公式;数组常量是用作参数的一组常量。)第一列中查找的数值。Lookup_value 可以为数值或引用。若 lookup_value 小于 table_array 第一列中的最小值,VLOOKUP 返回错误值 #N/A。

Table_array  为两列或多列数据。执行对一个区域或区域名称的引用。table_array 第一列中的值是由 lookup_value 搜索的值。这些值可以是文本、数字或逻辑值。不区分大小写。

Col_index_num  为 table_array 中待返回的匹配值的列序号。Col_index_num 为 1 时,返回 table_array 第一列中的数值;col_index_num 为 2,返回 table_array 第二列中的数值,以此类推。如果 col_index_num :

小于 1,VLOOKUP 返回错误值 #VALUE!。
大于 table_array 的列数,VLOOKUP 返回错误值 #REF!。
Range_lookup  为逻辑值,指定希望 VLOOKUP 查找精确的匹配值还是近似匹配值:

如果为 TRUE 或省略,则返回精确匹配值或近似匹配值。也就是说,如果找不到精确匹配值,则返回小于 lookup_value 的最大数值。
table_array 第一列中的值必须以升序排序;否则 VLOOKUP 可能无法返回正确的值。可以选择“数据”菜单上的“排序”命令,再选择“递增”,将这些值按升序排序。有关详细信息,请参阅默认排序次序。

如果为 FALSE,VLOOKUP 将只寻找精确匹配值。在此情况下,table_array 第一列的值不需要排序。如果 table_array 第一列中有两个或多个值与 lookup_value 匹配,则使用第一个找到的值。如果找不到精确匹配值,则返回错误值 #N/A。
说明
在 table_array 第一列中搜索文本值时,请确保 table_array 第一列中的数据没有前置空格、后置空格、直引号(' 或 ")与弯引号(‘或“)不一致或非打印字符。在上述情况下,VLOOKUP 可能返回不正确或非预期的值。有关用于清除文本数据的函数的详细信息,请参阅文本和数据函数。
在搜索数字或日期值时,请确保 table_array 第一列中的数据未保存为文本值。在该情况下,VLOOKUP 可能返回不正确或非预期的值。有关详细信息,请参阅将保存为文本的数字转换为数字值。


以上有一点注意,即VLOOKUP如果非精确查找,必须排序,而精确查找则不必。

精确查找之本表查找


姓名 工号 性别 籍贯 出生年月
甲 A0001 男 北京 1980-8-5
乙 A0002 女 天津 1985-9-6
丙 A0003 男 河北 1985-3-7
丁 A0004 女 河南 1989-12-8


输入姓名查找对工人的籍贯和出生日

姓名 籍贯 出生年月 籍贯公式  =VLOOKUP(A11,$A$1:$E$5,4,FALSE)
甲 北京 29438 出生年月公式  =VLOOKUP(A11,$A$1:$E$5,5,FALSE)
1980-8-5 格式改为日期  =VLOOKUP(A11,$A$1:$E$5,5,FALSE)
1980-8-5 用公式直接改格式  =TEXT(VLOOKUP(A11,$A$1:$E$5,5,FALSE),"YYYY-M-D")
以上公式中的FALSE也可用0(零)替代
=VLOOKUP(A11,$A$1:$E$5,4,0)
效果是一样了。

精确查找之跨表查找

姓名 籍贯 出生年月 籍贯公式  =VLOOKUP(A11,Sheet2!$A$1:$E$5,4,FALSE)
甲 北京 29438 出生年月公式  =VLOOKUP(A11,Sheet2!$A$1:$E$5,5,FALSE)
1980-8-5 格式改为日期  =VLOOKUP(A11,Sheet2!$A$1:$E$5,5,FALSE)
1980-8-5 用公式直接改格式  =TEXT(VLOOKUP(A11,Sheet2!$A$1:$E$5,5,FALSE),"YYYY-M-D")


附件: 3140632006911203001.gif
1
查看完整版本: 查找和引用函数(转)