如何用Excel公式拆分单元格中的数字与文本组合内容?
Excel公式拆分单元格中的数字与文本组合内容
可以通过Excel公式实现这类拆分需求,以下分两种版本给出解决方案:
一、Excel 365/2021及以上版本(支持TEXTSPLIT函数)
这类版本可借助TEXTSPLIT快速拆分分隔符,再提取每个片段的数字和文本:
1. 提取第一个数字(B2单元格)
=IFERROR(--LEFT(INDEX(TEXTSPLIT(A2,"/"),1),MATCH(FALSE,ISNUMBER(--MID(INDEX(TEXTSPLIT(A2,"/"),1),ROW(INDIRECT("1:"&LEN(INDEX(TEXTSPLIT(A2,"/"),1)))),1)),0)-1),"")
2. 提取第一个文本(C2单元格)
=IFERROR(MID(INDEX(TEXTSPLIT(A2,"/"),1),MATCH(FALSE,ISNUMBER(--MID(INDEX(TEXTSPLIT(A2,"/"),1),ROW(INDIRECT("1:"&LEN(INDEX(TEXTSPLIT(A2,"/"),1)))),1)),0),LEN(INDEX(TEXTSPLIT(A2,"/"),1))),"")
3. 提取后续数字和文本
- 第二个数字(D2):将公式中的
INDEX(...,1)改为INDEX(...,2) - 第二个文本(E2):同样将
INDEX(...,1)改为INDEX(...,2) - 以此类推,对应第N组内容时,将
1替换为N即可
二、旧版Excel(无TEXTSPLIT函数)
使用FILTERXML拆分分隔符,再提取数字和文本:
1. 提取第一个数字(B2单元格)
=IFERROR(--LEFT(FILTERXML("<t><s>"&SUBSTITUTE(A2,"/","</s><s>")&"</s></t>","//s[1]"),MATCH(FALSE,ISNUMBER(--MID(FILTERXML("<t><s>"&SUBSTITUTE(A2,"/","</s><s>")&"</s></t>","//s[1]"),ROW(INDIRECT("1:"&LEN(FILTERXML("<t><s>"&SUBSTITUTE(A2,"/","</s><s>")&"</s></t>","//s[1]")))),1)),0)-1),"")
2. 提取第一个文本(C2单元格)
=IFERROR(MID(FILTERXML("<t><s>"&SUBSTITUTE(A2,"/","</s><s>")&"</s></t>","//s[1]"),MATCH(FALSE,ISNUMBER(--MID(FILTERXML("<t><s>"&SUBSTITUTE(A2,"/","</s><s>")&"</s></t>","//s[1]"),ROW(INDIRECT("1:"&LEN(FILTERXML("<t><s>"&SUBSTITUTE(A2,"/","</s><s>")&"</s></t>","//s[1]")))),1)),0),LEN(FILTERXML("<t><s>"&SUBSTITUTE(A2,"/","</s><s>")&"</s></t>","//s[1]"))),"")
3. 提取后续内容
将公式中的//s[1]替换为//s[2]、//s[3]等,即可对应第N组的数字和文本。
注意事项
- 公式中的
--用于将提取的文本型数字转换为数值型,若不需要可直接去掉 - 第二个示例中
6CA对应目标列CS应为输入笔误,公式会正确提取CA - 若单元格内容为空,公式会返回空值,符合目标格式要求
内容的提问来源于stack exchange,提问作者Ryan Kapper
相关产品推荐
相关产品推荐

