Excel:从混合字符中提取以9开头的10位数字需求问询
提取Excel中以9开头的10位数字的解决方案
方法一:适用Excel 2019/365及以上版本
假设目标数据在A列,在B1单元格输入以下公式,下拉填充即可:=IFERROR(TEXTJOIN("",TRUE,FILTERXML("<t><s>"&SUBSTITUTE(A1," ","</s><s>")&"</s></t>","//s[starts-with(.,'9') and string-length(.)=10]")), "")
公式逻辑说明
- 通过
SUBSTITUTE将单元格内的空格替换为XML标签,把字符串拆分为独立的元素片段 FILTERXML筛选出以9开头且长度恰好为10位的元素TEXTJOIN合并筛选结果,IFERROR处理无匹配项的情况,返回空值
验证示例
- 输入
DGTY 9523874200→ 返回9523874200 - 输入
5389456287521→ 返回空值 - 输入
DGTY 19523874200→ 返回空值
方法二:适用所有Excel版本(VBA自定义函数)
如果你的Excel版本不支持上述函数,可通过VBA实现:
- 按
Alt+F11打开VBA编辑器 - 右键点击当前工作簿 → 插入 → 模块
- 粘贴以下代码:
Function Extract9Start10Digits(rng As Range) As String Dim regEx As Object Set regEx = CreateObject("VBScript.RegExp") regEx.Pattern = "\b9\d{9}\b" '匹配完整的以9开头的10位数字(\b为单词边界,避免从长数字中截取) regEx.Global = True Dim matches As Object Set matches = regEx.Execute(rng.Value) If matches.Count > 0 Then Extract9Start10Digits = matches(0).Value Else Extract9Start10Digits = "" End If End Function
- 返回工作表,在B1单元格输入
=Extract9Start10Digits(A1),下拉填充即可
额外说明
- 如果单元格内存在多个符合条件的10位数字,方法一会返回所有匹配项的拼接结果,方法二仅返回第一个匹配项;若需返回所有匹配项,可修改VBA代码将结果用分隔符拼接。
- 正则中的
\b确保匹配的是独立的10位数字,不会从更长的数字串(如91234567890)中截取前10位。
内容的提问来源于stack exchange,提问作者user28764976
相关产品推荐
相关产品推荐

