前言
- 在Excel的查询功能中,vlookup函数是一个极为有用的工具,能迅速地帮助定位所需数据。然而,在实际运用过程中,可能会遇到更为复杂的情况,比如反向查询、模糊查询和多条件查询等。下面是按照查询类别分别展示如何利用不同的方法来处理这些复杂情况。
(1)单条件查询
-
单条件查询也称基础查询,单条件查询较为简单,通常情况下也是在实际应用中使用较多的一种查询。
vlookup函数的用法:=vlookup(vlookup_value, table_array, col_index_num, [range_lookup])
函数中共4个变量。
变量① vlookup_value:必需参数,表示要查找的对象
变量② table_array:必需参数,表示查找范围,要以查找对象作为第一列
变量③ col_index_num:必需参数,表示目标信息所在列数
变量④ [range_lookup]:可选参数,表示查找方式
可以理解为:①找什么 ②在哪找 ③找哪的第几列 ④怎么找? -
如图所示,若需查询例如"张三"的学历信息,可以在F2单元格运用以下VLOOKUP函数实现快速检索:
=VLOOKUP(E2, A:C, 2, 0)
。其中,E2是所要查找的关键参照值,此处即为"张三"的姓名;A:C定义了查找范围,要求查找区域的第一列必须包含要查找的姓名,并且这里指定了从A列至C列连续的区域,确保姓名位于查找序列的起始位置,而其后的列则包含了需要检索的目标信息——即学历位于查找范围的第二列;2指定的是在上述查找范围中,要返回的结果所在的列序号,意味着要从查找范围的第二列获取对应的数据,也就是学历信息;0参数决定了查找类型为精确匹配,这意味着只有当找到与E2单元格中"张三"完全一致的姓名时才会返回对应的结果。在实际应用中,特别是在需要精准对应关系的情况下,通常会选用精确查找(0),而非近似查找(1)。

(2)多条件查询
- 在处理包含重复属性值的数据表时,单凭一个条件搜索可能无法准确锁定目标信息。为提高查询的精确度和效率,可以采用多条件查询,即结合多个关键字段一同筛选数据。例如,在现有数据表中,想要精准查找出名为"张三"的员工在2月份的工资详情,由于存在多名同名员工,所以需要额外设立一个辅助列(A2单元格)来整合识别信息,该列的公式为
=B2&C2
,将姓名与另一个具有唯一性的字段(如日期)合并为一个复合标识。 - 接下来,在最终展示查询结果的H2单元格内,利用改良过的VLOOKUP函数实现多条件检索:
=VLOOKUP(F2&G2, A:D, 4, 0)
。此函数将待查找的两项条件(其中F2为"张三"的姓名,G2为辅助识别信息)合并成一个复合键,然后在查找范围A:D中基于这个复合键进行严格的精确查找(由参数0决定),并从查找范围内第4列提取出所需的工资数额。这样一来,即便在多名同名员工的数据中,也能轻松定位到指定员工在特定月份的工资记录。

补充:不增加辅助列的方法
- 在无需增设辅助列的情况下,可在H2单元格直接运用如下公式实现多条件查询:
=VLOOKUP(F2&G2, IF({1,0}, B2:B9&C2:C9, D2:D9),2,0)
。此处,巧妙地结合了VLOOKUP函数和IF函数。IF函数的作用是动态构造查找范围,它的逻辑条件部分设定为{1,0}
,一个为TRUE的数组,这意味着无论何时都会执行IF函数的"真"分支,即返回B2:B9&C2:C9
的值。这就相当于将姓名和另一唯一属性字段(例如日期)在运行时临时拼接为一个复合键,用作VLOOKUP函数查找范围的第一列。同时,IF函数的"假"分支虽被设定为D2:D9
,但在当前语境下并不会生效。查找范围实际上是由姓名和唯一属性字段构成的复合键以及需要查询的目标列(假设为工资列)组成。 - 因此,当VLOOKUP函数根据F2和G2中的复合查找条件在构造的查找范围内成功匹配时,它将返回查找范围内相应行的第二列数据,即查询结果,如图所示。如此一来,即便不增加辅助列,也能够实现对包含重复姓名但具有唯一性组合的员工信息进行精准查询。

补充:二维表的多条件查询
- 在处理如图所示的二维表查询时,考虑到了表格的结构特点以及交互式查询需求。右侧查找对象设置了下拉列表框,分别用于选择姓名和月份,这里暂时只展示姓名下拉菜单的示例。借助这样的设计,用户可以根据实际需求灵活选取任意姓名或月份,进而迅速定位并检索出特定个人在特定月份的成绩。换句话说,这一功能允许用户通过直观便捷的操作,只需在姓名和月份的下拉列表中做出选择,系统就能够立即响应,自动查询并呈现选定姓名在对应月份的成绩情况,实现了数据查询的高度灵活性与便捷性。
- 需引入新函数MATCH函数,函数的用法:
MATCH(lookup_value, lookup_array, [match_type])
。
变量① lookup_value:必需参数,要查找的值。
变量② lookup_array:必需参数,可能包含所要查找值的一维数组范围或数组。
变量③ [match_type]:可选参数,决定查找的方式(匹配类型),可以是0(精准匹配)或1(近似匹配)。
可以理解为:①要找谁 ②在哪找 ③怎么找
以图片中的姓名、月份为例,要找谁:1月,在哪找:A1:D1,怎么找:0(精准匹配)。因此,MATCH(1月,A1:D1, 0) =2

- 鉴于上述MATCH函数的应用原理,可以将其与VLOOKUP函数巧妙结合,以便在复杂二维表格中灵活查找指定数据。如图所示,在H2单元格中,可以输入以下公式来获取李四在1月份的成绩:
=VLOOKUP(F2, A:D, MATCH(G2, A1:D1, 0), 0)
,在这个实例中,由于成绩所在的列会随着月份的变化而变动,直接指定列数的方式不再适用。为了解决这个问题,运用MATCH函数动态确定成绩所在列的位置。MATCH函数会根据G2单元格中所选定的月份,在A1到D1这一行标题区域中寻找对应的列索引。 - 简而言之,此公式首先通过MATCH函数找到"1月份"所在列的编号,然后将该编号传递给VLOOKUP函数作为其第三参数,使VLOOKUP函数能够在动态变化的数据列中精确查找并返回李四在1月份的成绩,从而实现了在多变的二维表格中灵活查询匹配的功能。

(3)反向查询
- 在处理VLOOKUP函数的反向查询场景时,可以通过嵌套IF函数实现类似于无辅助列多条件查询的效果。以查找姓名为李四所在地区的为例,可以将如下公式填写在F2单元格:
=VLOOKUP(E2, IF({1,0}, B:B, A:A), 2, 0)
,该公式通过IF函数构建了一个临时查找范围,其中逻辑条件部分恒为TRUE,故始终返回B列(假设B列存储地区信息)的数据,而A列(假设A列存储姓名)内容则在此次查询中并未实际使用。当查找对象李四在B列中出现时,VLOOKUP函数会返回其对应行的第二列数据,即地区信息。 - 不过,针对反向查找任务,更为简洁高效的方法是采用INDEX与MATCH函数的组合。这种方法能够更灵活地处理反向查找及多条件查找的需求,避免了IF函数在此类场景下的局限性。

补充:反向查询利用index函数和match函数相结合
- 由于利用vlookup函数的反向查询较为复杂,考虑可以使用
index函数和match函数
结合使用的方法来实现,如图所示。首先,两个函数的具体用法如下:
INDEX函数用法:INDEX(array, row_num, [column_num])
变量① array:必需参数,代表一个单元格区域或数组常量
变量② row_num:必需参数,指定从数组或区域内返回哪一行的值
变量③ [column_num]:可选参数,在二维数组中使用时指定返回哪一列的值。如果省略此参数,则函数仅返回指定行号上的整个列
MATCH函数用法:MATCH(lookup_value, lookup_array, [match_type])
变量① lookup_value:必需参数,要查找的值
变量② lookup_array:必需参数,可能包含所要查找值的一维数组范围或数组
变量③ [match_type]:可选参数,决定查找的方式(匹配类型),可以是0(精准匹配)或1(近似匹配)
以查询姓名为李四为例,MATCH(E2,B:B,0) = 3;INDEX(A:A, 3) = 安徽。相对于vlookup函数的反向查询,按照此方法实现反向查询较为简单,此方法也是较为常用的反向查询方法。

(4)多列数据同时匹配查询
- 在处理涉及跨列查询同一对象多种数据的任务时,例如在一个数据表中,每位人员每月都有对应的成绩记录,可以通过VLOOKUP函数实现快速检索。以查找姓名为刘七的所有月份成绩为例,假如成绩数据分布在从A至D列,每位人员拥有连续3个月的成绩记录,可以在G2单元格中设置如下的查询公式:
=VLOOKUP($F$2, $A:$D, COLUMN()-5, 0)
,这个公式会帮助找到刘七在一月份的成绩,其中$F$2
代表查找的关键字(即刘七的姓名),$A:$D
定义了查找的整个数据范围,COLUMN()-5
用来动态定位成绩所在的列(G列减去5等于A列,即第一个月的成绩列),而0表示进行精确匹配。 - 进一步地,只需将G2单元格中的公式向左水平拖拽复制到H2和I2单元格,这样就可以依次获取刘七在二月和三月的成绩数据,实现了一次性查询并显示同一个对象在不同列中的所有相关信息。

(5)模糊查询
- 模糊查询是一种不为常用的查询方法,但在处理不完全匹配或需要包含部分关键字的查询场景时,却发挥着不可或缺的作用。其中,
*
符号扮演了通配符的角色,它可以代表任意数量的任何字符。若要在一份数据表中依据公司名简称来匹配并获取对应公司的总人数信息,模糊查询功能便显得尤为重要。比如,在E2单元格应用如下函数公式:=VLOOKUP("*"&D2&"*",A:B,2,0)
,在这个表达式里,&
将单元格D2的内容前后包裹,从而形成一个新的前后有任意字符的查询对象。因此,该函数的实际意图是查找A列中以D2单元格内容为核心,并允许前后存在其他字符的记录,一旦找到匹配项,则返回同一行B列(索引为2)的数据,即对应公司的员工人数。

(6)批量查询
- 批量查询是指利用VLOOKUP函数,针对一系列数据而非单个单元格进行连续查找的过程。比如,在如图所示的情形时,如果需要在Sheet1表格中查找每一项序号在Sheet2表格中的对应新数值,可以首先在Sheet1的C2单元格中插入以下公式:
=VLOOKUP(A2, Sheet2!A:B, 2, 0)
,这个公式会查找A2单元格中的序号在Sheet2的A列中是否存在,并返回相应行在B列(索引为2)的新数。通过向下拖拽该单元格的填充柄,即可实现对整列序号的一次性连续查找,快速生成所有序号对应的新数。 - 批量查找相较于单条件查找,尽管查找对象有所不同——单条件查找通常针对单一变量,而批量查找针对的是一个数据列或一组数据,但其核心逻辑依然保持了查找与匹配的过程。批量查询的优势在于能高效地处理大量数据,简化了重复性查找的工作流程。

(7)重复查询
- 重复查询是指在两列表格中查找重复的值,可以是数值、字符值等,实际的查找过程中查找的对象不同也会使查找的结果也不同。比如说,如图所示,查找对象为A列或者是B列会使得查找结果也不同,以查找A列为查找对象为例,查找范围为B列,当A列中有与B列中相同的值时,则返回A列的值。在C2的位置写入函数
=VLOOKUP(A:A,B:B,1,0)
,即可得到结果。通过此方法便可实现重复查询,重复查询在实际应用中较为少见,也是一种较为简单的查询方法。

(8)跨表引用查询
- 跨表引用查询是一种常见的Excel查询技术,它建立在单条件查询的基础之上,主要用于在不同工作表或工作簿之间进行数据匹配。这种查询方法旨在解决跨表格间的信息关联问题,只需调整查找范围指向另一表格,而查询的核心逻辑保持不变。以如图所示的场景为例,如果要在B表中查找并填充姓名所对应的地区信息,而这些信息存储在独立的A表中,那么此时跨表引用查询就显得尤为方便。具体操作是在B表的B2单元格中应用以下VLOOKUP函数:
=VLOOKUP(A2, [A表.xlsx]Sheet1!$A:$C, 2, 0)
。该函数会根据B2单元格中的姓名,在外部文件"A表.xlsx"的Sheet1工作表中,从A列至C列的范围内进行精确查找,并返回对应姓名所在行的第二列数据,即地区信息。通过向下拖动该公式填充柄,即可批量完成B表中所有姓名与其对应地区的匹配查询。 - 跨表引用查询是最常用的Excel查询技巧之一,它极大地增强了数据处理的灵活性与效率,使得在不同表格间建立有效联系变得简单易行。

(9)一对多查询
- 在日常数据分析工作中,一对多查询是一种极为普遍且需要谨慎处理的场景。所谓一对多查询,是指当某个查找对象在数据集中存在多个匹配项时,VLOOKUP函数是如何作出反应的。具体而言,VLOOKUP函数遵循的原则是:当遇到多个相同的查找对象时,它只会返回查找范围中首个匹配成功的值,即按照从上到下的顺序,优先匹配到的第一个相符记录。例如,如图所示,在查找姓名张三的信息时,可以在F2单元格中运用如下VLOOKUP函数:
=VLOOKUP(E2, A:C, 2, 0)
。该函数将查找E2单元格中张三在A至C列范围内的第一个匹配项,并返回其对应的第二列值,即张三的第一个匹配记录值1。同样地,如果有多个李四的记录,VLOOKUP函数同样只会返回第一个李四的值1。 - 在实际应用中,应对一对多查询时务必要留意VLOOKUP函数的这一特性,因为它可能导致只获取部分匹配信息,而忽略掉其他的匹配项。因此,理解和掌握一对多查询的特点有助于在实际工作中更加精准有效地利用VLOOKUP函数解决问题。

(10)多对多查询
- 多对多查询是基于一对多查询概念拓展的一种情形,尽管涉及的场景更为复杂,但其核心原理依旧不变。当查询对象和查找范围均存在多个相同的值时,VLOOKUP函数遵循的基本原则是:不论查找对象中有多少个相同的值,它始终仅匹配查找范围中从上至下的第一个相同的值。比如,如图所示,当进行姓名为张三的多对多查询时,无论查找对象中有多少个张三,VLOOKUP函数在执行过程中总是会在查找范围中率先找到并返回第一个出现的张三所对应的值。因此,无论查找对象包含多少个张三,它们所得出的匹配结果始终是查找范围中第一个张三所对应的值1。另外,在F6单元格中运用如下VLOOKUP函数:
=VLOOKUP(E6,A:C,2,0)
。 - 换言之,在多对多查询场景下,VLOOKUP函数的行为表现为对每个查找对象仅做一次匹配,且固定匹配到查找范围内的首个相符记录,这会导致在存在多个相同查找对象时,返回的结果可能并不符合预期。因此,在实际应用中应对多对多查询时,应当充分理解并关注VLOOKUP函数的这一限制,以避免得出错误或不完整的结论。

补充
- 除了提及的一对多和多对多查询模式外,还有另外两种基础查询类型:一对一查询和多对一查询。一对一查询实质上就是常规的单条件查询,其特点是查找对象和查找范围之间一一对应的关系,处理起来相对直接明了,应用场景广泛且易于理解。而在多对一查询场景中,是对一对一查询的扩展,体现在查找对象中可能存在多个相同的值,但它们都对应查找范围中的同一个唯一值。在这种情况下,尽管查找对象数量增多,但仍然可以沿用单条件查询的基本逻辑,即通过查找每一个对象在查找范围中的匹配项,最终返回相同的唯一结果。
- 总结来说,无论是简单的一对一查询,还是稍显复杂的多对一查询,其核心思路都是通过查找匹配项来实现数据间的关联,只不过在多对一查询时,需确保多个查找对象都能正确关联到查找范围中的同一个唯一目标。