Excel数组匹配问题:需返回完整票号而非单个数字
提取完整票号的Excel公式解决方案
问题根源
你使用的原公式仅匹配了文本中的单个数字字符,无法识别连续的数字序列,因此只返回首位数字。
针对不同Excel版本的解决公式
1. Excel 365/2021(支持动态数组)
如果目标单元格是B2,用这个公式直接提取完整连续数字:
=LET( chars, MID(B2,SEQUENCE(LEN(B2)),1), first_num, XMATCH(TRUE,ISNUMBER(--chars),0), num_count, SUM(--ISNUMBER(--MID(B2,SEQUENCE(first_num,LEN(B2)-first_num+1),1))), MID(B2,first_num,num_count) )
如果票号固定带有“票号”前缀和“号”后缀,用更精准的版本:
=TEXTBEFORE(TEXTAFTER(B2,"票号"),"号")
2. 旧版Excel(无动态数组支持)
输入公式后按Ctrl+Shift+Enter完成数组公式输入:
=MID(B2,MATCH(TRUE,ISNUMBER(--MID(B2,ROW(INDIRECT("1:"&LEN(B2))),1)),0),SUM(--ISNUMBER(--MID(B2,ROW(INDIRECT("1:"&LEN(B2))),1))))
带前缀后缀的版本:
=TRIM(MID(SUBSTITUTE(B2,"票号","|"),FIND("|",SUBSTITUTE(B2,"票号","|"))+1,FIND("号",SUBSTITUTE(B2,"票号","|"))-FIND("|",SUBSTITUTE(B2,"票号","|"))-1))
效果验证
- 当文本是“XX票号2222号XX”时,返回
2222 - 当文本是“XX票号2号XX”时,返回
2
内容的提问来源于stack exchange,提问作者Nick Martin
相关产品推荐
相关产品推荐

