Excel的查询和引用是日常数据提取、匹配和整合的核心工具,能极大提升数据处理效率,全面而深入的掌握Excel的查询和引用函数至关重要,这些函数是你从数据海洋中精准提取信息的“渔网”和“导航仪”。
一、基础认知:查询引用函数的核心价值
查询引用函数的本质是:根据指定条件/位置,从一个或多个数据区域中精准提取/关联数据,解决“找数据、对数据、带数据”三大问题。避免手动复制粘贴的低效与错误!
二、按功能分类的查询引用函数详解
(一)按位置提取数据,(已知行、列,找对应值)
场景:适用于数据区域结构固定(如表头、行号不变),需按 “行号 + 列号” 定位数据的场景
1.Index函数:按行号/列号返回值
功能:从指定数据区域的“第N行,第M列“提取数据。
语法结构:=Index(数组,行号,[列号],[区域号])。
参数解读:
1.数组:必须,即返回数据的数据范围。
2.行号:必须,即返回指定指定数组范围中第几行的值。
3.列号:可选,如果省略默认返回所有列。
4.区域号,可选,当有多个数组时,用于指定返回第几个数组范围中的值。
目的1:返回数据范围中的所有值。
操作方法:
在目标单元格中输入公式:=INDEX(B2:G24,0,0)。
注意事项:
当参数中的行号、列号均为“0”时,代表返回指定返回中的所有行和所有列。
目的2:返回指定行(列)的值。
操作方法:
在目标单元格中输入公式:=INDEX(B2:G24,5,1)。
注意事项:
参数行号(5)、列号(1)是相对于当前的数据区域(B2:G24)而言的,并不是源数据。
目的3:返回指定的行或列。
操作方法:
在目标单元格中输入公式:=INDEX(B2:G24,0,1)返回“员工姓名”列;输入公式:=INDEX(B2:G24,2,0)返回“鲁肃”的数据信息。
2.Offset函数:按偏移量提取数据。
功能:以一个“基准单元格”为起点,按指定的“行偏移、列偏移”距离,提取目标数据,灵活性比Index更高。
语法结构:=Offset(参照区域,行数,列数,[高度],[宽度])。
参数解读:
1.参数区域,必须:就是数据区域。
2.行数,必须:要返回第几行的值,正数时向下/右偏移,负数时向上/左偏移。
3.列数,必须:要返回第几列的值,正数时向下/右偏移,负数时向上/左偏移。
4.宽度和高度,可选:基于当前范围返回值的宽度和高度,默认为1。
目的1:返回指定的值,如“员工姓名”。
操作方法:
在目标单元格中输入公式:=OFFSET(A2,5,1)。
目的2:返回基于目标单元格指定宽度和高度的值,如“员工姓名”和“年龄”。
操作方法:
在目标单元格中输入公式:=OFFSET(A2,5,1,2,2)。
3.Match函数:返回指定值在相对区域中的位置。
功能:返回指定值在指定区域中的相对位置。
语法结构:=Match(查找值,查找区域,[匹配类型])。
参数解读:
1.查找值,必须:就是需要定位的值。
2.查找区域,必须:制作在的相对范围。
3.匹配类型,可选:具有1,0,-1三个可选值,分别对应“小于”、“精准匹配”、“大于”,默认情况下为1,即“小于”。
目的:返回“司马懿”的相对位置。
操作方法:
在目标单元格中输入公式:=MATCH(B7,B3:B24,0)。
三、按“条件”匹配数据
场景:在数据量较大,数据结构不够稳定时,需要按关键词匹配数据的场景。
1.Index+Match:万能组合
目的1:查询对应员工的月薪(正向(从左向右)查询)。
操作方法:
在目标单元格中输入公式:=INDEX(G3:G24,MATCH(I3,B3:B24,0))。
目的2:根据“工号”查询对应的“员工姓名”(逆向(从右向左)查询)。
操作方法:
在目标单元格中输入公式:=INDEX(B3:B24,MATCH(J3,H3:H24,0))。
目的3:根据指定的字段(如员工姓名,年龄)返回具体的值。
操作方法:
在目标单元格中输入公式:=INDEX(B3:H24,MATCH(J3,B3:B24,0),MATCH(K3,B2:H2,0))。
注意事项:
参数“MATCH(J3,B3:B24,0)”定位的是“员工姓名”所在行的相对位置,而“MATCH(K3,B2:H2,0)”定位的是所选列的相对位置,最终用Index返回行列交叉处的值。
2.VLOOKUP函数:垂直方向按列匹配。
功能:从左右向查找,返回指定列的对应值。
语法结构:=Vlookup(查找值,数据区域,返回值相对的列数,[匹配模式])。
参数解读:
1.查找值,必须:查找的依据字段。
2.数据区域,必须:至少包括查询列和返回列的数据范围。
3.返回值相对的列数:要返回的值在数据区域中的第X列。
4.匹配模式:精准匹配和模糊匹配,对应的值为0和1。
目的1:根据“员工姓名”返回对应的“月薪”。
操作方法:
在目标单元格中输入公式:=VLOOKUP(J3,B3:H24,6,0)。
目的2:根据“工号”查询对应的姓名(逆向查询)。
操作方法:
在目标单元格中输入公式:=VLOOKUP(J3,IF({1,0},H3:H24,B3:B24),2,0)
注意事项:
1.此用法为VLOOKUP函数的特殊用法,逆向查询。
2.公式中的数据范围参数为“IF({1,0},H3:H24,B3:B24)”,其目的就是重组组成新的数据查询范围,使查询值在左,返回值在右,实现常规用法。
目的3:根据“员工姓名”和“学历”查询对应的“月薪”。
操作方法:
1.将“姓名”和“学历”字段用&连接在一起,即在备注列单元格区域中输入公式:=B3&F3
2.在目标单元格中输入公式:
=IFERROR(VLOOKUP(K3&L3,IF({1,0},I3:I24,G3:G24),2,0),"未查询到符合条件的值")。
注意事项:
1.将多个条件用&链接之后,其原理和
逆向查询相同。
2.如果用从左向右查询,可以在最左侧条件的
左边插入新列,并用&返回两个条件的结果。在“数据范围”中将新列包含到里面即可。
四、按“多条件”匹配数据
场景:适用于需同时满足多个条件或多个数据区域提取数据的场景,如跨表匹配,多关键字筛选等。
1.Lookup函数:灵活的多条件匹配函数。
功能:从单行、单列或数组中查询符合条件的值。支持“模糊匹配”和“多条件精准匹配”,但精准匹配时,查找区域需要排序。
语法结构:
1.数组版:=Lookup(查找值,查找值所在数据范围,[返回值数据范围])
2.向量版:=Lookup(查找值,查找值和返回值所在数据范围)。
解读:
1.Lookup函数的参数根据字面意思就可以理解,没有太复杂的部分。
2.当用数组形式查询时,首先要以“查找值所在的数据范围”为关键字进行升序排序,否则无法达到精准匹配的目的,因为Lookup函数是“向下匹配”的。
目的1:根据“员工姓名”查询对应的“月薪”。
操作方法:
1.以“员工姓名”为主要关键字,进行升序排序。
2.在目标单元格中输入公式:=LOOKUP(K3,B3:B24,G3:G24)。
目的2:用数组形式根据“员工姓名”查询对应的“月薪”。
操作方法:
1.以“员工姓名”为主要关键字,进行升序排序。
2.在目标单元格中输入公式:=LOOKUP(K3,B3:G24)。
注意事项:
用数组形式实现精准查询时,数据范围的开始列必须为查询值所在的范围,结尾列必须为返回值所在的范围,否则无法实现查询的目的。
目的3:单条件查询,根据“员工姓名”查询对应的“月薪”。
操作方法:
在目标单元格中输入公式:=LOOKUP(1,0/(($B$3:$B$24=K3)),G3:G24)。
注意事项:
1.此用法为Lookup函数的变异用法,其原理同“向量版”原理。
2.当$B$3:$B$24=K3条件成立时,返回1,0/1则返回0;不成立时,则返回0,0/0则返回错误,根据Lookup函数“向下匹配”的原理,则返回条件成立时对应的值。
目的4:多条件查询,根据“员工姓名”和“学历”查询对应的“月薪”。
操作方法:
在目标单元格中输入公式:=IFERROR(LOOKUP(1,0/((B3:B24=K3)*(F3:F24=L3)),G3:G24),"未查询到匹配的值")。
注意事项:
只有当多个条件同时成立时,(B3:B24=K3)*(F3:F24=L3)才会返回1,否则都会返回0。
目的5:单条件逆向查询,根据“工号”查询对应的“员工姓名”、“月薪”。
操作方法:
在目标单元格中输入公式:=LOOKUP(1,0/(H3:H24=K3),B3:B24)
、=LOOKUP(1,0/(H3:H24=K3),G3:G24)。
目的6:对应的等级查询,如查询“月薪”对应的等级。
操作方法:
在目标单元格中输入公式:=LOOKUP(G3,$K$3:$K$7,$L$3:$L$7)。
注意事项:
等级匹配时采用的是向量形式,其原理为Lookup的“向下匹配”原理,即查找不到此值时,返回小于当前值的最大值对应的值。
2.Filter函数:新版本对条件查询函数。
功能:批量返回符合条件的值或数据区域。
语法结构:=Filter(返回值区域,筛选条件,[所包含数组中的所有值都为空时的返回值])。
参数解读:
1.返回值区域,必须:可以是单独的列,也可以是相应的区域。
2.筛选条件,必须:可以是单条件,也可以是多条件。
3.所包含数组中的所有值都为空时的返回值,可选:当没有符合条件的值时,返回空值。
目的1:单条件查询,根据“员工姓名”查询对应的“月薪”。
操作方法:
在目标单元格中输入公式:=FILTER(G3:G24,B3:B24=K3)。
目的2:单条件逆向查询,根据“工号”查询对应的“员工姓名”。
操作方法:
在目标单元格中输入公式:=FILTER(B3:B24,H3:H24=K3)。
目的3:一对多查询,返回符合指定“学历”的“员工姓名”。
操作方法:
在目标单元格中输入公式:=FILTER(B3:B24,F3:F24=K3)。
目的4:单条件批量查询,查询指定“学历”员工的所有信息。
操作方法:
在目标单元格中输入公式:=FILTER(B3:H24,F3:F24=K3)。
目的5:多字段批量查询,查询符合“学历”和“性别”要求的员工信息。
操作方法:
在目标单元格中输入公式:=IFERROR(FILTER(B3:H24,(F3:F24=K3)*(D3:D24=L3)),"未查询到符合条件的数据")。
本章小结:
文中从多个方面详细介绍了Excel中的查询引用技巧,包括一些常见的疑难查询,逆向查询,批量查询,“一对多”查询等应用技巧,如果能够熟练掌握,对于提高数据处理效率,将会有很大的帮助作用。