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

Excel新手求助:提取指定规则的字母数字/数字子串方法

解决Excel中提取code/codes后字母数字子串的需求

方法1:使用Excel 365/2021正则函数(推荐)

如果你的Excel版本支持REGEXEXTRACT等正则函数,直接用以下公式(假设目标文本在单元格A1):

=TEXTJOIN(";",,FILTER(REGEXEXTRACT(A1,"(?i)(?:code|codes)[^\w]*(\w+)",SEQUENCE(100)),NOT(ISERROR(REGEXEXTRACT(A1,"(?i)(?:code|codes)[^\w]*(\w+)",SEQUENCE(100))))))

公式说明:

  • (?i):开启不区分大小写匹配,兼容CODE/Codes等任意大小写形式的关键词。
  • (?:code|codes):匹配code或codes(非捕获组,避免干扰后续提取)。
  • [^\w]*:匹配关键词和目标子串之间的任意非字母数字字符(包括空格、冒号、括号、下划线等)。
  • (\w+):捕获后续连续的字母数字子串(即需要提取的内容)。
  • SEQUENCE(100):指定最多提取100个匹配结果,可按需调整数量。
  • FILTER:过滤无匹配时产生的错误值。
  • TEXTJOIN:将多个匹配结果用;分隔拼接。

方法2:旧版Excel使用VBA自定义函数

若Excel版本不支持正则函数,通过VBA创建自定义函数:

  1. 按Alt + F11打开VBA编辑器。
  2. 右键当前工作簿,选「插入」→「模块」。
  3. 粘贴以下代码:
Function ExtractCodes(inputText As String) As String
    Dim regex As Object
    Dim matches As Object
    Dim match As Object
    Dim resultStr As String
    
    Set regex = CreateObject("VBScript.RegExp")
    regex.Global = True '开启全局匹配,提取所有符合条件的子串
    regex.IgnoreCase = True '不区分大小写
    regex.Pattern = "(code|codes)[^\w]*(\w+)" '匹配规则
    
    Set matches = regex.Execute(inputText)
    resultStr = ""
    
    For Each match In matches
        If resultStr <> "" Then resultStr = resultStr & ";"
        resultStr = resultStr & match.SubMatches(1) '提取捕获的目标子串
    Next match
    
    ExtractCodes = resultStr
End Function
  1. 返回Excel界面,在单元格输入=ExtractCodes(A1)即可调用。

示例验证

  • 输入test string → 输出为空
  • 输入another test string CODE 6657Yuyt9 and codes: 9989 → 输出6657Yuyt9;9989
  • 输入with code bracket the (Code A011261) → 输出A011261

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 02:13:21