Excel日期格式转换:将DEC07、SEP2007等格式转为MM/YYYY
嘿,这个问题我之前帮不少朋友解决过,咱们分几种实用方法来处理,你可以根据自己的数据量和需求选:
方法1:用公式直接转换(灵活适配各种情况)
这个方法能直接把文本格式的日期转换成真正的日期值,还能自动补全两位年份成四位。假设你的日期数据在A列,在B1单元格输入下面的公式,然后下拉填充就行:
=TEXT(DATE(IF(LEN(RIGHT(A1,LEN(A1)-3))=2,20&RIGHT(A1,2),RIGHT(A1,LEN(A1)-3)),MONTH(DATEVALUE(LEFT(A1,3)&" 1")),1),"mm/yyyy")
我给你拆解下公式里的关键部分:
LEFT(A1,3):提取前3个字符的月份缩写(比如DEC、SEP)MONTH(DATEVALUE(LEFT(A1,3)&" 1")):把月份缩写转换成对应的数字(DEC对应12,SEP对应9)RIGHT(A1,LEN(A1)-3):提取年份部分(比如DEC07里的07,SEP2007里的2007)IF(...):判断年份是两位还是四位,两位的话自动补成20XX(如果你的数据里有19XX的情况,比如07是1907,可以把公式里的20&RIGHT(A1,2)改成IF(RIGHT(A1,2)>23,19&RIGHT(A1,2),20&RIGHT(A1,2)),适配不同年份范围)- 最后用
TEXT函数把组合好的日期值格式化成mm/yyyy样式
方法2:用Power Query批量处理(适合大量数据)
如果你的数据量很大,或者以后还要重复处理类似数据,Power Query会更高效:
- 选中你的日期列,点击「数据」选项卡 → 「从表格/区域」(Excel 2016及以后版本才有这个功能)
- 在Power Query编辑器里选中该列,先试试点击「转换」→「数据类型」→「日期」,如果Excel能自动识别所有格式(DEC07、SEP2007这些),那直接下一步就行
- 如果自动识别失败,就点击「添加列」→「自定义列」,输入下面的自定义公式(把
Column1改成你的列名):= if Text.Length([Column1])=5 then Date.FromText(Text.Start([Column1],3)&" "&Text.End([Column1],2), [Format="MMM yy"]) else Date.FromText([Column1], [Format="MMM yyyy"]) - 选中新生成的自定义列,点击「转换」→「格式」→「自定义格式」,输入
mm/yyyy - 最后点击「关闭并上载」,转换好的日期就会回到Excel里了
方法3:自定义单元格格式(仅改显示,实际值不变)
⚠️ 注意:这个方法只是改变单元格的显示样式,单元格实际还是原来的文本,如果你需要用这些日期做计算,不推荐用这个:
- 先按照方法1把文本转成真正的日期值,然后选中这些日期单元格
- 右键→「设置单元格格式」→「自定义」,在「类型」框里输入
mm/yyyy,点击确定就可以了
另外提个小细节:如果你的Excel是中文版本,可能需要确认系统能识别英文月份缩写(一般都可以,但如果不行,你可以把公式里的DATEVALUE部分换成SWITCH函数手动映射,比如SWITCH(LEFT(A1,3),"DEC",12,"SEP",9,"JUN",6),把所有用到的月份缩写都列进去就行)
内容的提问来源于stack exchange,提问作者Kate




