如何从Excel单元格的任意位置提取固定格式的NCT编号?
提取Excel文本中的NCT编号方法
方法一:函数组合提取(适合快速处理或小量数据)
假设原始文本在A列,在B1单元格输入以下公式后下拉填充:
=MID(A1,SEARCH("NCT",A1),11)
- 逻辑说明:
SEARCH("NCT",A1)定位文本中"NCT"首次出现的位置,MID从该位置开始提取11个字符(刚好覆盖"NCT"+8位数字的长度)。 - 若需提取文本中最后一个NCT编号,可使用:
=MID(A1,SEARCH("NCT",SUBSTITUTE(A1,"NCT","XXX",LEN(A1)-LEN(SUBSTITUTE(A1,"NCT","")))),11)
方法二:Power Query批量提取(适合大量数据处理)
- 选中原始数据列,点击数据选项卡 → 从表格/区域(Excel 2016及以上版本),将数据导入Power Query编辑器。
- 点击添加列 → 自定义列,输入以下M语言公式:
= Text.RegexMatch([原始列名], "NCT\d{8}"){0}
(注意将公式中的[原始列名]替换成你实际的列名称)
3. 点击确定后,新列会自动提取出NCT编号,最后点击关闭并上载将结果返回至Excel。
方法三:VBA宏批量处理(适合需重复使用的场景)
- 按下
Alt + F11打开VBA编辑器,插入新模块。 - 粘贴以下代码:
Sub ExtractNCT() Dim rng As Range Dim cell As Range Dim regEx As Object Set regEx = CreateObject("VBScript.RegExp") regEx.Pattern = "NCT\d{8}" regEx.Global = False Set rng = Application.InputBox("请选择包含文本的列", Type:=8) For Each cell In rng If regEx.Test(cell.Value) Then cell.Offset(0, 1).Value = regEx.Execute(cell.Value)(0) Else cell.Offset(0, 1).Value = "未找到NCT编号" End If Next cell End Sub
- 返回Excel,按下
Alt + F8运行宏,选择目标列后,宏会自动在右侧列生成提取结果。
内容的提问来源于stack exchange,提问作者stayschemin
相关产品推荐
相关产品推荐

