Excel单元格字母重排:如何用公式转换特定格式内容?
解决方案
假设目标数据在单元格A1,可以用以下公式实现需求:
适用于Excel 365及以上版本(更简洁)
=LET( part1, LEFT(A1, FIND("_", A1)-1), part2, MID(A1, FIND("_", A1)+1, FIND("_", A1, FIND("_", A1)+1)-FIND("_", A1)-1), new_part1, MID(part1,3,2)&LEFT(part1,2)&MID(part1,5,LEN(part1)-4), new_part2, MID(part2,3,2)&LEFT(part2,2)&MID(part2,5,LEN(part2)-4), new_part1&"-"&new_part2 )
兼容所有Excel版本(无LET函数)
=MID(LEFT(A1,FIND("_",A1)-1),3,2)&LEFT(LEFT(A1,FIND("_",A1)-1),2)&MID(LEFT(A1,FIND("_",A1)-1),5,LEN(LEFT(A1,FIND("_",A1)-1))-4)&"-"&MID(MID(A1,FIND("_",A1)+1,FIND("_",A1,FIND("_",A1)+1)-FIND("_",A1)-1),3,2)&LEFT(MID(A1,FIND("_",A1)+1,FIND("_",A1,FIND("_",A1)+1)-FIND("_",A1)-1),2)&MID(MID(A1,FIND("_",A1)+1,FIND("_",A1,FIND("_",A1)+1)-FIND("_",A1)-1),5,LEN(MID(A1,FIND("_",A1)+1,FIND("_",A1,FIND("_",A1)+1)-FIND("_",A1)-1))-4)
公式拆解
提取核心片段
- 用
LEFT(A1, FIND("_", A1)-1)定位第一个下划线,提取左侧的ABCDP2S6 - 用嵌套的
FIND定位前后两个下划线,再用MID提取中间的EFGHP2Te6
- 用
重组片段
- 截取第一片段的第3-4位(
CD)、前2位(AB)、第5位及以后内容(P2S6),拼接为CDABP2S6 - 截取第二片段的第3-4位(
GH)、前2位(EF)、第5位及以后内容(P2Te6),拼接为GHEFP2Te6
- 截取第一片段的第3-4位(
最终拼接
- 用连字符
-连接两个重组后的片段,得到目标结果
- 用连字符
内容的提问来源于stack exchange,提问作者Jacek
相关产品推荐
相关产品推荐

