You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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

火山引擎 最新活动