查找函数的复合运用

421次阅读

共计 2290 个字符,预计需要花费 6 分钟才能阅读完成。

查找函数出了最基础的查询外,可以多个进行复合使用来解决更多实际问题,之前已经列出较为常用的查找函数,下面尝试将他们运用到实际的问题中。

常用查询函数说明:

https://hgtoo.com/archives/2024/02/23/excel%e5%ad%a6%e4%b9%a0-%e6%9f%a5%e6%89%be%e5%87%bd%e6%95%b0/

场景 1:根据条件查找并返回结果

假设有一张学生成绩表格,包含学生姓名、科目、成绩等信息。我们想要根据学生姓名和科目查找对应的成绩。

方法 1:VLOOKUP(B23,$C$6:$J$13,MATCH(C23,$C$5:$J$5,0),FALSE)

首先使用 MATCH 函数找到 "科目" 在表头的位置,然后利用 VLOOKUP 根据学生姓名在整个表格中查找对应科目的成绩。

这个公式的解释如下:

  1. MATCH(C23,$C$5:$J$5,0):MATCH 函数用于找到 C23 在表头范围($C$5:$J$5)中的位置,其中 0 表示精确匹配。结合场景就是找到“数学”在学科列表中的位置,用于定位需要返回的纵列序号
  2. VLOOKUP(B23,$C$6:$J$13,MATCH(C23,$C$5:$J$5,0),FALSE):VLOOKUP 函数用于找到 B23 所在的行中,MATCH(C23,$C$5:$J$5,0) 列所在的数据即:”数学”所在列的数据。其中 FALSE 表示精确查找。

 

方法 2:INDEX($C$6:$J$13,MATCH(B32,$C$6:$C$13,0),MATCH(C32,$C$5:$J$5,0))

使用 INDEX 函数在整体成绩范围内,再使用 MATCH 函数分别找出行与列的位置从而找到最终学生姓名对应的科目成绩

这个公式的解释如下:

  1. MATCH(B32,$C$6:$C$13,0):MATCH 函数用于找到 B32 在表头范围($C$6:$C$13)中的位置,其中 0 表示精确匹配。结合场景就是找到“张三”在学生姓名列表中的位置,用于定位整个表单的横坐标
  2. MATCH(C32,$C$5:$J$5,0):MATCH 函数用于找到 C32 在表头范围($C$5:$J$5)中的位置,其中 0 表示精确匹配。结合场景就是找到“数学”在学科列表中的位置,用于定位整个表单的纵坐标。
  3. INDEX($C$6:$J$13,MATCH(B32,$C$6:$C$13,0),MATCH(C32,$C$5:$J$5,0)):INDEX 函数用于找到范围($C$6:$J$13)中第 MATCH(B32,$C$6:$C$13,0) 行,第 MATCH(C32,$C$5:$J$5,0) 列的数据即:”张三”所在行,“数学”所在列的数据。

 

 

场景 2:根据条件过滤数据

样例照旧,还是假设有一张学生成绩表格,包含学生姓名、科目、成绩等信息。现在,我们需要筛选出语文成绩大于等级 60 的学生姓名

公式:FILTER($O$6:$O$13, INDEX($P$6:$V$13, , MATCH(N$21,$P$5:$V$5,0))>= 60)

公式的目标是通过使用 FILTER 函数从 $O$6:$O$13 中筛选出符合特定条件的值,筛选的条件使用 INDEX 去定位对应的学科列。

这个公式的解释如下:

1.MATCH(N$21, $P$5:$V$5, 0):使用 MATCH 函数在 $P$5:$V$5 中查找 N$21 对应学科的位置。

2.INDEX($P$6:$V$13, , MATCH(N$21, $P$5:$V$5, 0)):使用 INDEX 函数返回 $P$6:$V$13 中与 N$21 对应学科的整列学生成绩。

3.INDEX($O$6:$O$13, ...):使用 INDEX 函数返回 $O$6:$O$13 中与 N$21 对应学科成绩及格(大于等于 60)的学生名称。

4.FILTER($O$6:$O$13, INDEX(..., MATCH(...)) >= 60):最终使用 FILTER 函数筛选出在 N$21 对应学科中及格的学生名称。

 

场景 3:查找条件对应的信息

样例照旧,还是假设有一张学生成绩表格,包含学生姓名、科目、成绩等信息。现在,我们需要找出每门学科成绩最高的学生及对应的成绩

方法 INDEX($AA$6:$AA$13,MATCH(MAX(AB$6:AB$13),AB$6:AB$13,0),1)

使用条件函数(这里是 MAX)和 MATCH 函数来定位列,再使用 INDEX 函数将目标数列定位到对应的列上,达到查询这个值对应位置的目的

这个公式的解释如下:

  1. MAX(AB$6:AB$13):使用 MAX 函数中查找 AB$6:AB$13) 最大的值。
  2. MATCH(MAX(AB$6:AB$13),AB$6:AB$13,0):使用 MATCH 函数查找最大的值对应的列数,其中 0 表示精确查找。
  3. INDEX($AA$6:$AA$13,MATCH(MAX(AB$6:AB$13),AB$6:AB$13,0),1):使用 INDEX 函数再名称列中进行偏移,最终找到 MATCH 函数返回的序号,达到找到最大值对应的学生名称这个目的。注意:这里的最大值必须唯一,如果不唯一公式会出错。

同理,可以使用通用的方法输出最大成绩。

 

这里为了方便演示,没有定位成绩列,将公式展开,使用 INDEX 来定位成绩列可以做到适用面更大,但也会增加公式复杂度,可以根据需要进行选择。

 

总结: 查询函数不仅仅可以查询数据所在的位置,还可以与多种不同的函数,条件函数等进行结合,对一个数据区域进行二次处理,筛选出符合条件的数据。当然,也不仅仅只是文中所表述的情景,这里只是做一个引子,拆解遇到的问题,再使用函数组合解决遇到的问题这才是最终目的。

 

 

正文完
 0