如何从含百分比文本列表提取100%记录的第N早日期?
提取100%记录中第N早日期的Excel解决方案
实现逻辑
要完成这个需求,需要先筛选出所有100%对应的日期,再从中提取第N早的记录,核心是结合条件筛选和日期排序提取两个步骤。
数组公式方案(兼容全版本Excel)
假设数据在A2:A100区域,N值存于B1单元格,使用以下数组公式(输入后按Ctrl+Shift+Enter确认,Excel 365/2021直接回车即可):
=TEXT(SMALL(IF(LEFT(A2:A100,3)="100",DATEVALUE(MID(A2:A100,FIND("(",A2:A100)+1,10))),B1),"mm/dd/yyyy")
公式拆解
LEFT(A2:A100,3)="100":判断每条记录是否为100%,生成逻辑筛选数组MID(A2:A100,FIND("(",A2:A100)+1,10):从符合条件的记录中提取括号内的10位日期文本DATEVALUE():将文本日期转换为Excel可计算的日期序列号SMALL(...,B1):从筛选后的日期序列号中提取第N小的数值(即第N早的日期)TEXT(..., "mm/dd/yyyy"):将日期序列号转回指定格式的文本日期
动态数组简化方案(Excel 365/2021)
如果使用支持动态数组的Excel版本,用FILTER()替代IF(),公式更易读:
=TEXT(SMALL(DATEVALUE(MID(FILTER(A2:A100,LEFT(A2:A100,3)="100"),FIND("(",FILTER(A2:A100,LEFT(A2:A100,3)="100"))+1,10)),B1),"mm/dd/yyyy")
分步操作方案(新手友好)
如果觉得数组公式复杂,可以拆分步骤:
- 插入辅助列(比如C列),提取所有
100%记录的日期:=IF(LEFT(A2,3)="100",DATEVALUE(MID(A2,FIND("(",A2)+1,10)),"") - 用
SMALL()提取第N早日期:=TEXT(SMALL(C:C,B1),"mm/dd/yyyy")
内容的提问来源于stack exchange,提问作者DanCue
相关产品推荐
相关产品推荐

