使用VLOOKUP、MATCH和INDEX执行动态搜索
常用公式可在软件中按F 1协助中查。
VLOOKUP网友简释:
从另一个表中查对应值并提取数据自动填写
A B
三毛 男
王小虎 男
彭湃 男
狗蛋 男
小雪 女 在表二的B1列里输入公式:
=VLOOKUP(A1,表一!A1 : B9,[,false)
翻译:=我(王小丫,在表一里,这个范围,提取其后第N列的值(其
自身算1),准确)
注意逗号的有无,冒号的位置。可将表一打开,有时可点表一的单元格代替输入 一些数值.
这样,在B1里就显示王小丫的性别了
公式的内容是这样的,vlookup是excel的查函数,括号里首先是你要查的值, 这里我们引用的是A1中的内容,也就是王小丫,然后用“,”隔开,第二个参数 是查范围,也就是我们想要在哪个范围内查,当然我们这里用的是表一里的 A1到B9,为什么B列也要包含一会再说,标注好查范围之后,也用“,”隔开, 在接下去是返回值的列号,也就是说,查到你要查的人名之后,这里还以王小 丫为例,在表一的A1到B9中到王小丫之后,我
们需要返回的值,是王小丫 所在列的后面第几列,因为我们要显示的是性别,那在我们查的范围里,姓名 是第一列,性别是第二列,所以我们要返回的是第二列的内容,下一个参数就设 置成2。这也是查范围为什么要把第二列也包含在内的原因。最后一个参数, 是模糊查功能,一般就设置为false,我们只查完全匹配的内容,就是说, 任命必须完全一样,才有效。
不知道这样说可不能够,需要注意的是,表一的内容,你要查的列必须以 升序排列。这是必须注意的,如果你要连年龄也一起显示出来,那就将查范围 扩大为A1到C9,返回的列号变成3
官方正文:
本文是由Microsoft MVP (最有价值专家)Ashish Mathur编写的。 相关详细信息,请访问Microsoft MVP网站。
在本文中,我将介绍您能够在Excel中用于〃动态搜索〃的工具。我所 说的〃动态搜索〃是指在行或列中搜索特定数据,然后在另一单元格中 返回值这个功能。我使用的工具为函数VLOOKUP、MATCH和 INDEXo
使用 VLOOKUP
VLOOKUP在表格的最左侧列中搜索值,然后从您在表格中指定的列 在同一行中返回值。(VLOOKUP中的V表示垂直。)
为了说明VLOOKUP,我们来看一项任务:使用区域B3: C11 —下 图所示一中的数据为区域E3: E11中列出的名称在区域F3: F11 中返回每小时费率。请注意,E3: E11中名称的顺序与B3: B11不 同。
这里采用的简单逻辑是:在区域B3: B11中搜索区域E3: E11中
列出的名称。为区域C3: C11中列出的名称返回每小时费率,然后
将费率放在区域F3: F11中。
实现此目的的公式为:
=VLOOKUP(E3,$B$3: $C$11,2,FALSE)
若要理解此公式,请考虑VLOOKUP的语法:
VLOOKUP(lookup_value,table_array,col_index_num,ra nge_lookup)
现在,我们将详细说明此特殊示例的语法中的参数:
lookup_value引用包含要查的值的单元格。所以,对于单元
格 F3,lookup_value 是 E3。
table_array在这里,table_array引用包含要查的数据和要
返回的数据的区域。在我们的示例中,区域B3: C11是将从中返回
每小时费率的列表。
col_index_num这引用区域$B$3: $C$11中包含要返回的数 据的列号。在我们的示例中,每小时费率位于第2列中。
range_lookup此值指定希望VLOOKUP查精确匹配值还是 近似匹配值。如果为TRUE或省略,则能够返回近似或精确匹配值。 为使此参数正常工作,table_array第一列中的值必须按升序放置。 如果为FALSE,如本示例所示,VLOOKUP将只查精确匹配值。 在这种情况下,不需要对table_array第一列中的值实行排序。
插入或删除数据时可能会导致的错误
现在,我们来看看公式中的复杂情况。
使用ISERROR处理缺少的名称
如果从单元格B9中删除了名称廖怡苓,则F5中的结果将为 #N/A,因为在单元格F5中,公
式在区域B3: C11中不到名称。 要隐藏错误值,公式是:
为什么vlookup显示的是公式=IF(ISERROR(VLOOKUP(E3,$B$3:
$C$11,2,FALSE)),"",VLOOKUP(E3,$B$3: $C$11,2,FALSE))
这里的基础逻辑是:如果公式返回错误值,则在该单元格中显示空白; 否则,显示每小时费率。
使用match处理插入的列
正如您在上述VLOOKUP公式中所看到的,col_index_name输入为 2,所以公式不是动态的。也就是说,如果在此区域的B列和C列 之间插入一个空列,则公式将返回0,因为第2列不再包含任何数 据。所以,现在的任务是使col_index_name足以动态地确定包含标 题每小时费率的单元格的列号。要实现此目的,我们使用MATCH函 数。
MATCH函数的语法为:
MATCH(lookup_value,lookup_array,match_type)
现在,我们将详细说明此特殊示例的语法中的参数:
Lookup_value包含每小时费率的单元格的引用。在这种情况 下,我们能够输入$F$1或将lookup_value指定为〃每小时费率”。
lookup_array这是您期望每小时费率所在的列一这是动态 搜索。值得注意的是,对于lookup_array应只存有一行。也就是说, 不输入区域$B$1: $D$2;而应输入$B$1: $D$1。
match_type输入0查精确匹配值,或输入1查近似匹
配值。在我们的示例中,我们输入0。
MATCH公式现在是:MATCH($F$1,$B$1: $D$1,0)公式结果是
2。
现在,如果在区域B3: C11中插入一列,该公式将得出3。单元格 F3中的VLOOKUP公式现在能够输入为:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论