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出马,他可以根据行列获取到交叉点的值,如果不提供列,数据源是单列,提供行即可。