如何在Excel单元格文本中提取单字母加数字形式的课程编码(如C2、H3等)
Excel提取单个字母+数字组合课程编码的方案
适用Excel 365/2021及以上版本
直接在单元格输入如下公式即可(默认原始数据存放在A1单元格,可按需调整):=TEXTJOIN("、",TRUE,IFERROR(REGEXEXTRACT(TEXTSPLIT(A1," "),"^[A-Za-z]\d$"),""))
公式逻辑说明:
- 先用
TEXTSPLIT按空格拆分原始文本为独立片段 - 用
REGEXEXTRACT匹配符合「单个字母+单个数字」规则的片段,不符合的返回错误值 IFERROR过滤无效错误值,最终用TEXTJOIN将所有匹配到的编码用指定分隔符拼接
如需匹配字母加多位数字的编码(如A12、B123),可将正则规则修改为^[A-Za-z]\d+$。
适用2019及更早的无正则函数的旧版Excel
使用VBA自定义函数实现,操作步骤如下:
- 按
Alt+F11打开VBA编辑器,右键点击当前工作簿名称,选择「插入」-「模块」 - 在模块编辑框粘贴如下代码:
Function ExtractCourseCode(rng As Range) As String Dim regEx As Object Dim matches As Object Dim i As Integer Set regEx = CreateObject("VBScript.RegExp") regEx.Global = True ' 匹配单个字母加单个数字,如需匹配多位数字,将下方规则改为 "[A-Za-z]\d+" regEx.Pattern = "[A-Za-z]\d" Set matches = regEx.Execute(rng.Value) For i = 0 To matches.Count - 1 ' 顿号为编码分隔符,可按需替换为逗号、空格等 ExtractCourseCode = ExtractCourseCode & "、" & matches(i) Next If Len(ExtractCourseCode) > 0 Then ExtractCourseCode = Mid(ExtractCourseCode, 2) End Function
- 保存工作簿为「启用宏的工作簿(*.xlsm)」格式,回到工作表后输入公式
=ExtractCourseCode(A1)即可提取对应单元格的所有课程编码。
内容的提问来源于stack exchange,提问作者Felix C
相关产品推荐
相关产品推荐

