1.INDEX函数
语法: INDEX(array, row_num, [column_num])
array: 单元格区域(查找的数据范围)
row_num: 第几行(以单元格区域左上角为起点)
column_num: 第几列(可选)
在给定的单元格区域中,INDEX函数用于返回特定行列交叉处单元格的值或引用(根据指定的行号和列号来返回一个值)
案例
1.某企业要求查询5月份销量 (从列中提取单元格数据)
INDEX函数可以提取单列数据中指定行位置的数据,INDEX(单列区域, 第几行)
2.某企业要求按地区查询广州的销量 (从行中提取提取单元格数据)
INDEX函数可以提取单行数据中指定列位置的数据,INDEX(单行区域, 第几列)
3.某企业要求按照月份和地区双条件查询2月份广州的销量 (按两个条件从指定区域提取单元格数据)
INDEX函数可以提取多行多列数据中指定行列位置的数据,INDEX(多行多列区域,第几行,第几列)
在以上的案例中,INDEX函数中的行、列参数的数字都是手动输入的,为了实现让公式跟随查询条件自动更新,可以使用MATCH函数自动计算得到需要的行、列位置
2.MATCH函数
语法: MATCH(lookup_value, lookup_array, [match_type])
lookup_value: 要查找的值 (查找的内容单元格)
lookup_array: 查找区域 (单行或单列区域)
match_type: 匹配类型 (match_type的取值: 1,0,-1)
match_type取值为1: 查找小于或等于lookup_value的最大值
match_type取值为0: 查找精确等于lookup_value的第一个值
match_type取值为-1: 查找大于或等于lookup_value的最小值
MATCH函数用于返回符合特定值特定顺序的项在数组中的相对位置
在实际工作中,MATCH函数经常用来与INDEX函数嵌套使用
案例
1.查找“3月”所在的相对位置 (查找指定数据在列区域中的相对位置)
2.查找“广州”所在的相对位置 (查找指定数据在行区域中的相对位置)
3.查找小于1900工资的最大值的相对位置
3.INDEX + MATCH组合
VLOOKUP函数在查询的时候只能从左往右查询,且查询对象所在的列必须要在查询区域的第一列,也就是说,只能通过A列来查询B列或其他列,而不能通过B列或其他列来反向查询A列
反向查询这类问题可以通过使用INDEX + MATCH两个函数进行组合求解
MATCH函数用来定位,INDEX函数根据定位来返回指定位置的值
使用MATCH函数来为INDEX函数的第二个参数提供值,告诉INDEX函数要返回的是第几个值
借助INDEX+MATCH函数组合实现从各种区域(单行、单列、多行多列)中按条件提取数据
案例
1.查询员工编号"LR0003"的姓名 (反向查询,从C列查询A列)
当要查询的条件(如“员工编号”)在表格中的位置(如C列)处在要返回的数据(如“姓名”)在表格中的位置(如A列)的右侧时,使用VLOOKUP函数无法按照C列的“员工编号”查询A列的“姓名”,但INDEX + MATCH函数组合对数据位置没有要求,依然可以得到查询结果
2.查询员工编号"LR003"应发工资
公式中的“C:C”代表整个C列,“F:F”代表整个F列
3.某企业要求按照月份和地区双条件查询3月份广州的销量数据 (多条件查询)
H2单元格输入: =INDEX(B2:D7,MATCH(F2,A2:A7,0),MATCH(G2,B1:D1,0))
此公式计算原理的解析分为以下3步:
1.使用“MATCH(F2,A2:A7,0)”根据月份条件定位目标数据所在的行数据
2.使用“MATCH(G2,B1:D1,0)”根据地区条件定位目标数据所在的列数据
3.将MATCH函数返回的行、列位置传递给INDEX函数,用于从多行多列单元格区域中的指定行、列交叉点位置提取数据