提取excel中的年月日
在Excel中提取出生日期,可以通过公式将年龄描述转换为时间差,再用当前日期减去时间差。以下是分步解决方案:
步骤1:准备辅助列(提取年、月、日)
假设年龄数据在A列(A2开始),在B、C、D列分别提取年/月/日:
列 | 公式 |
---|---|
B2(年) | =IFERROR(IF(FIND("岁",A2),--LEFT(A2,FIND("岁",A2)-1),0),0) |
C2(月) | =IFERROR(IF(FIND("个月",A2),--MID(A2,IFERROR(FIND("岁",A2)+1,1),FIND("个月",A2)-IFERROR(FIND("岁",A2)+1,1)),0),0) |
D2(日) | =IFERROR(IF(FIND("天",A2),--MID(A2,FIND("天",A2)-2,2),0),0) |
步骤2:计算出生日期(E列)
E2公式:
=DATE(YEAR(TODAY())-B2, MONTH(TODAY())-C2, DAY(TODAY())-D2)
步骤3:格式化结果
将E列设置为日期格式(右键单元格 → 设置单元格格式 → 日期 → YYYY-MM-DD)
示例效果(假设当前日期:2025-07-28)
A列(原始数据) | B列(年) | C列(月) | D列(日) | E列(出生日期) |
---|---|---|---|---|
10岁1个月 | 10 | 1 | 0 | 2015-06-28 |
10个月 | 0 | 10 | 0 | 2024-09-28 |
54岁 | 54 | 0 | 0 | 1971-07-28 |
2岁2个月14天 | 2 | 2 | 14 | 2023-05-14 |
公式说明:
-
提取原理:
FIND("岁",A2)
定位"岁"的位置--LEFT()
将文本数字转为数值IFERROR
处理不存在该单位的情况(如纯月份描述)MID()
截取中间数字(处理年月/月日混合情况)
-
日期计算:
DATE(Y,M,D)
自动处理跨年/跨月(如7月-10个月=去年9月)TODAY()
动态获取当前日期(可替换为固定日期如DATE(2025,7,28)
)
⚠️ 注意:若遇"月"单独出现(非"个月"),需先用查找替换将"月"改为"个月"(Ctrl+H替换"月"→"个月")
进阶优化(单公式完成):
若需单单元格计算,使用此数组公式(Ctrl+Shift+Enter输入):
=DATE(YEAR(TODAY())-IFERROR(–LEFT(A2,FIND(“岁”,A2)-1),0),
MONTH(TODAY())-IFERROR(–MID(A2,IFERROR(FIND(“岁”,A2)+1,1),FIND(“个月”,A2)-IFERROR(FIND(“岁”,A2)+1,1)),0),
DAY(TODAY())-IFERROR(–MID(A2,MAX(1,FIND(“天”,A2)-2),2),0))
此方案自动兼容:10岁
、5个月
、15天
、3岁2个月
、1岁10天
等组合格式。