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

如何用Excel函数公式提取符合正则([A-Za-z].\d\d\d\d.\d\d)的商品编号?

在Excel中提取格式为X.XXXX.XX的商品编号

可以通过Excel函数公式实现需求,根据你的Excel版本不同,提供两种方案:

方案1:适用于Excel 365/2021及以上版本

利用FILTERXML结合XPath的正则匹配能力,假设目标内容在单元格A1,公式如下:

=TEXTJOIN(", ", TRUE, FILTERXML("<t><s>"&SUBSTITUTE(SUBSTITUTE(A1, ".", "|"), " ", "</s><s>")&"</s></t>", "//s[matches(., '^[A-Za-z]\.\d{4}\.\d{2}$')]"))

说明:

  1. 先将单元格内容按空格拆分,同时把点号替换为|(避免XML解析冲突),生成可被解析的XML结构
  2. 通过XPath的matches函数精准匹配X.XXXX.XX格式的字符串(正则规则与你提供的一致)
  3. 如果每个单元格仅存在一个目标编号,可简化公式:
=FILTERXML("<t><s>"&SUBSTITUTE(SUBSTITUTE(A1, ".", "|"), " ", "</s><s>")&"</s></t>", "//s[matches(., '^[A-Za-z]\.\d{4}\.\d{2}$')]")

方案2:兼容Excel 2019及更早版本

旧版Excel无原生正则支持,可通过数组公式结合通配符匹配实现,假设目标内容在A1,输入公式后按Ctrl+Shift+Enter确认(Excel 365可直接回车):

=INDEX(MID(A1, ROW($1:$100), 9), MATCH(1, IF(ISNUMBER(SEARCH("[A-Za-z].????..", MID(A1, ROW($1:$100), 9))), 1, 0), 0))

说明:

  1. 从单元格的每个字符位置开始截取9位长度的字符串(正好匹配X.XXXX.XX的长度)
  2. 用通配符[A-Za-z].????..匹配目标格式,?代表任意单个字符(此处对应数字)
  3. 若需要更精确的字符类型判断(避免?匹配非数字),可使用更复杂的数组公式:
=INDEX(MID(A1,ROW($1:$100),9),MATCH(1,IF(AND(ISNUMBER(CODE(UPPER(MID(A1,ROW($1:$100),1)))),CODE(UPPER(MID(A1,ROW($1:$100),1)))>=65,CODE(UPPER(MID(A1,ROW($1:$100),1)))<=90,MID(A1,ROW($1:$100)+1,1)=".",ISNUMBER(--MID(A1,ROW($1:$100)+2,4)),MID(A1,ROW($1:$100)+6,1)=".",ISNUMBER(--MID(A1,ROW($1:$100)+7,2))),1,0),0)

该公式逐个验证每个位置的字符类型(字母、点号、数字),匹配精度更高,但公式长度较长。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 09:47:35