You need to enable JavaScript to run this app. 如何使用regexreplace结合LEFT函数将文本格式多组日期转为ddMMMyyyy格式
优惠活动
大模型
产品
解决方案
定价
更多

如何使用regexreplace结合LEFT函数将文本格式多组日期转为ddMMMyyyy格式

日期格式转换实现方案

核心逻辑

之前直接修改日期格式不生效,是因为原8位ddmmyyyy文本未被系统识别为合法日期。只需拆分每个日期块的日、月、年三个部分,构造合法日期后输出目标格式即可,无需修改原数据结构。

适配不同版本的操作公式

Excel 365/2021、WPS 最新版(支持动态数组)

直接在结果单元格输入以下公式,下拉填充即可自动处理任意数量的空格分隔日期块,保留原排列顺序:

=TEXTJOIN(" ",TRUE,LET(日期块数组,TEXTSPLIT(D2," ",,TRUE),MAP(日期块数组,LAMBDA(单个块,TEXT(DATE(--RIGHT(单个块,4),--MID(单个块,3,2),--LEFT(单个块,2)),"ddMMMyyyy","en-us")))))

公式各部分说明:

  • TEXTSPLIT(D2," ",,TRUE):按空格拆分原单元格的日期块,自动忽略多余空格
  • DATE(--RIGHT(单个块,4),--MID(单个块,3,2),--LEFT(单个块,2)):手动构造合法日期,完全不受系统默认日期格式影响:
    • 取单个块最后4位为年份
    • 取单个块第3-4位为数字月份
    • 取单个块前2位为日期
  • TEXT(构造的日期,"ddMMMyyyy","en-us"):强制输出英文格式,自动匹配标准三位月份缩写
  • TEXTJOIN(" ",TRUE,...):将处理后的日期块用空格重新拼接,和原排列一致

旧版Excel(无动态数组函数)

如果单元格内日期块数量固定(以最多3个为例),可直接使用以下公式:

=IF(LEN(D2)>=8,TEXT(DATE(--RIGHT(LEFT(D2,8),4),--MID(D2,3,2),--LEFT(D2,2)),"ddMMMyyyy","en-us"),"")&IF(LEN(D2)>=18," "&TEXT(DATE(--RIGHT(TRIM(MID(D2,10,10)),4),--MID(TRIM(MID(D2,10,10)),3,2),--LEFT(TRIM(MID(D2,10,10)),2)),"ddMMMyyyy","en-us"),"")&IF(LEN(D2)>=28," "&TEXT(DATE(--RIGHT(TRIM(MID(D2,19,10)),4),--MID(TRIM(MID(D2,19,10)),3,2),--LEFT(TRIM(MID(D2,19,10)),2)),"ddMMMyyyy","en-us"),"")

如果实际日期块更多,按照相同逻辑追加提取判断部分即可。

兼容旧版的无语言依赖写法

如果你的Excel版本不支持TEXT的语言参数,无法输出英文月份缩写,可以直接手动映射月份缩写,替换单个块的处理逻辑即可:

LEFT(单个块,2)&CHOOSE(--MID(单个块,3,2),"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec")&RIGHT(单个块,4)

这种方式完全不依赖系统设置,直接拼接指定的英文月份缩写,兼容性更高。

关于插入短横的需求

如果要按最初思路在8位日期的第2、第4位后插入短横分隔,可将单个块的日期构造部分替换为:

--(LEFT(单个块,2)&"-"&MID(单个块,3,2)&"-"&RIGHT(单个块,4))

即可将原格式转为dd-mm-yyyy的系统可识别结构,但这种方式受系统默认日期格式限制,因此更推荐上述手动构造日期的方案。

内容的提问来源于stack exchange,提问作者Nix

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.13 23:06:02