使用VLOOKUPMATCHINDEX执行动态搜索
常用公式可在软件中按F 1协助中查。
VLOOKUP网友简释:
从另一个表中查对应值并提取数据自动填写
A    B
三毛    男
王小虎    男
彭湃    男
狗蛋    男
小雪    女 在表二的B1列里输入公式:
=VLOOKUP(A1,表一!A1 B9,[,false)
翻译:=我(王小丫,在表一里,这个范围,提取其后第N列的值(其
自身算1),准确)
注意逗号的有无,冒号的位置。可将表一打开,有时可点表一的单元格代替输入 一些数值.
这样B1里就显示王小丫的性别了
公式的内容是这样的,vlookupexcel的查函数,括号里首先是你要查的值, 这里我们引用的是A1中的内容,也就是王小丫,然后用隔开,第二个参数 是查范围,也就是我们想要在哪个范围内查,当然我们这里用的是表一里的 A1B9,为什么B列也要包含一会再说,标注好查范围之后,也用隔开, 在接下去是返回值的列号,也就是说,查到你要查的人名之后,这里还以王小 丫为例,在表一的A1B9中到王小丫之后,我
们需要返回的值,是王小丫 所在列的后面第几列,因为我们要显示的是性别,那在我们查的范围里,姓名 是第一列,性别是第二列,所以我们要返回的是第二列的内容,下一个参数就设 置成2。这也是查范围为什么要把第二列也包含在内的原因。最后一个参数, 是模糊查功能,一般就设置为false,我们只查完全匹配的内容,就是说, 任命必须完全一样,才有效。
不知道这样说可不能够,需要注意的是,表一的内容,你要查的列必须以 升序排列。这是必须注意的,如果你要连年龄也一起显示出来,那就将查范围 扩大为A1到C9,返回的列号变成3
官方正文:
本文是由Microsoft MVP (最有价值专家)Ashish Mathur编写的。 相关详细信息,请访问Microsoft MVP网站。
在本文中,我将介绍您能够在Excel中用于动态搜索的工具。我所 说的动态搜索是指在行或列中搜索特定数据,然后在另一单元格中 返回值这个功能。我使用的工具为函数VLOOKUPMATCHINDEXo
使用 VLOOKUP
VLOOKUP在表格的最左侧列中搜索值,然后从您在表格中指定的列 在同一行中返回值。(VLOOKUP中的V表示垂直。)
为了说明VLOOKUP,我们来看一项任务:使用区域B3C11 —下 图所示中的数据为区域E3E11中列出的名称在区域F3F11 中返回每小时费率。请注意,E3E11中名称的顺序与B3B11不 同。
这里采用的简单逻辑是:在区域B3B11中搜索区域E3E11
列出的名称。为区域C3C11中列出的名称返回每小时费率,然后
将费率放在区域F3F11中。
实现此目的的公式为:
=VLOOKUP(E3,$B$3$C$11,2,FALSE)
若要理解此公式,请考虑VLOOKUP的语法:
VLOOKUP(lookup_value,table_array,col_index_num,ra nge_lookup)
现在,我们将详细说明此特殊示例的语法中的参数:
lookup_value引用包含要查的值的单元格。所以,对于单元
F3lookup_value E3
table_array在这里,table_array引用包含要查的数据和要
返回的数据的区域。在我们的示例中,区域B3C11是将从中返回
每小时费率的列表。
col_index_num这引用区域$B$3$C$11中包含要返回的数 据的列号。在我们的示例中,每小时费率位于第2列中。
range_lookup此值指定希望VLOOKUP查精确匹配值还是 近似匹配值。如果为TRUE或省略,则能够返回近似或精确匹配值。 为使此参数正常工作,table_array第一列中的值必须按升序放置。 如果为FALSE,如本示例所示,VLOOKUP将只查精确匹配值。 在这种情况下,不需要对table_array第一列中的值实行排序。
插入或删除数据时可能会导致的错误
现在,我们来看看公式中的复杂情况。
使用ISERROR处理缺少的名称
如果从单元格B9中删除了名称廖怡苓,则F5中的结果将为 #N/A,因为在单元格F5中,公
式在区域B3C11中不到名称。 要隐藏错误值,公式是:
为什么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。
现在,如果在区域B3C11中插入一列,该公式将得出3。单元格 F3中的VLOOKUP公式现在能够输入为: