You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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实现:

  1. 按Alt+F11打开VBA编辑器
  2. 右键点击当前工作簿 → 插入 → 模块
  3. 粘贴以下代码:
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
  1. 返回工作表,在B1单元格输入=Extract9Start10Digits(A1),下拉填充即可

额外说明

  • 如果单元格内存在多个符合条件的10位数字,方法一会返回所有匹配项的拼接结果,方法二仅返回第一个匹配项;若需返回所有匹配项,可修改VBA代码将结果用分隔符拼接。
  • 正则中的\b确保匹配的是独立的10位数字,不会从更长的数字串(如91234567890)中截取前10位。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 14:52:45