求助:多条件下提取Excel数据集倒数第N个值的公式
满足多条件提取倒数第N个值的Excel公式
针对你需要提取B列匹配A1、I列为空的F列倒数第1、2、3个值的需求,以下是不同Excel版本的可用公式:
一、旧版Excel(非动态数组,如Excel 2019及更早)
这类版本需要使用数组公式,输入完成后需按 Ctrl+Shift+Enter 确认生效:
提取倒数第1个值(最后一个符合条件的值):
=INDEX(F:F,MAX(IF((B:B=A1)*(I:I=""),ROW(B:B))))提取倒数第2个值:
=INDEX(F:F,LARGE(IF((B:B=A1)*(I:I=""),ROW(B:B)),2))提取倒数第3个值:
=INDEX(F:F,LARGE(IF((B:B=A1)*(I:I=""),ROW(B:B)),3))
公式逻辑说明:
(B:B=A1)*(I:I=""):同时验证两个条件,符合条件的行返回1,否则返回0;IF(...,ROW(B:B)):仅保留符合条件行的行号,不符合条件的返回FALSE;LARGE(...,N):取符合条件行号中的第N大值(行号越大,数据越靠后,对应倒数第N个符合条件的记录);INDEX(F:F,行号):根据行号提取F列对应位置的值。
你也可以基于原公式的SMALL思路调整,公式如下(同样需按组合键确认):=INDEX(F:F,SMALL(IF((B:B=A1)*(I:I=""),ROW(B:B)),COUNTIFS(B:B,A1,I:I,"")-N+1))
将公式中的N替换为1、2、3,即可分别提取倒数第1、2、3个值。
二、Excel 365/2021(动态数组版本)
这类版本支持动态数组函数,公式更简洁,无需组合键确认,甚至可一次性提取多个值:
提取倒数第1个值:
=TAKE(FILTER(F:F,(B:B=A1)*(I:I="")),-1)提取倒数第2个值:
=TAKE(FILTER(F:F,(B:B=A1)*(I:I="")),-2)提取倒数第3个值:
=TAKE(FILTER(F:F,(B:B=A1)*(I:I="")),-3)
公式逻辑说明:
FILTER(F:F,(B:B=A1)*(I:I="")):先筛选出所有符合双条件的F列数据,保留原顺序;TAKE(..., -N):直接截取筛选结果的最后N个值,若提取多个值,结果会自动溢出到下方单元格。
注意事项:
- 建议使用实际数据范围(如
B2:B1000)替代整列引用(B:B),减少公式计算量,提升运行效率; - 若I列的空值是由公式返回(如
=""),I:I=""依然有效;若I列存在空格,需将条件改为TRIM(I:I)=""。
内容的提问来源于stack exchange,提问作者Asho1000
相关产品推荐
相关产品推荐

