EXCEL按条件倒序提取,倒数第三次成绩?

相对很多朋友来说,都是有些难度和陌生的东西

今天我们就回来谈点熟悉的东西,函数公式

一般我们都是按条件提取都是提取首个,但有的时候,我们需要倒序提取

这样VLOOKUP等一些公式就不灵了……

数据源

我们先从简单的开始

一般我们遇到复杂的问题,可以辅助列来完成,所有我们先讲辅助列思路

=COUNTIF(A:A,A2) 按统计每个出现的总次数

=COUNTIF($A$2:A2,A2) ,注意$A$2:A2,我们锁定了开始,下拉会递增

范围会不断的扩大,那依次$A$2:A3,$A$2:A4,……

这样我们的次数也会从1开始递增,而不是依次统计出来了

使用这种次数-递增次数我们就可以得到倒序次数,首次都是1,相减会得到0,所以我们要+1

单独筛选,即可发现顺序是倒序编号

辅助列搭建好,我们就好处理了

公式:=LOOKUP(1,0/(A2:A24="张飞")/(C2:C24=2),B2:B24)

这里使用的LOOKUP的特性,会返回最后一次满足条件的值,只有一个满足条件正好

新手可以套用格式:

=LOOKUP(1,0/(区域区域1=条件1)/(条件区域2=条件2),结果区域),条件可以多个

如果你还是觉得太难,那么你可以再加一列

你熟悉的VLOOKUP,他又回来了,多么亲切

很多朋友初学,有一个执念,看到查询,都要一下

"VLOOKUP可以吗?"执念之深,有时难以想象……

结束了吗?

NO!

小编作为一个懒人,辅助列一般还是不愿意的,但是并不是说辅助列不好

有时候辅助列可以简化问题,提高可读性,但是有时候,我们不用辅助才是特定场景下更好的选择,比如设计模板时……

公式:=INDEX(D:D,LARGE(IF(C2:C24="张飞",ROW(2:24)),3))

这里的3就是倒数第几次,根据需求直接改即可

公式并不复杂,

> 第1部分- IF(C2:C24="张飞",ROW(2:24)),如果姓名中是张飞,就把行号返回

>  第2部分 -LARGE(第1部分,3),第1步中返回行号可能有多个,我们取第几大,其实也就是从后往前的第几大行号

>  第3步 - INDEX(成绩区域,第2步) 我们拿到行号,想要拿到成绩,就需要Index出马,他可以根据行列获取到交叉点的值,如果不提供列,数据源是单列,提供行即可。

思路决定出路,很多需求,我们目前提供的函数可能没有直接提供,但是我们可以灵活的组合,变化无穷,随心所欲的去实现需求
这也是函数迷的快乐吧!
(0)

相关推荐