如何快速从Excel单元格提取ELR与里程数据批量填充?
批量提取ELR代码与里程的解决方案
方法1:Excel内置函数(无编程门槛,快速落地)
假设Asset Description在A列,目标ELR列在B,Mileage列在C:
提取3位ELR代码
- 通用适配公式(不管ELR在单元格哪个位置,只要是3位大写字母):
逻辑:定位单元格内第一个大写字母的位置,截取后续3位,精准匹配ELR格式。=MID(A2,MIN(FIND({"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"},A2&"ABCDEFGHIJKLMNOPQRSTUVWXYZ")),3) - 示例格式专属简化公式(内容带
:分隔符):
逻辑:先抓=TEXTBEFORE(TEXTAFTER(A2,": ")," "):后的内容,再取第一个空格前的字符,直接拿到ELR。
提取里程数值
- Excel 365/2021版本(支持正则函数,最省心):
逻辑:用正则匹配所有带小数点的数字,自动提取并转为数值格式。=NUMBERVALUE(REGEXEXTRACT(A2,"\d+\.\d+")) - 旧版Excel兼容公式:
逻辑:抓第一个空格后的内容,再取=NUMBERVALUE(TEXTBEFORE(TEXTAFTER(A2," ")," -"))-前的字符,转成数值。
操作: 在B2、C2输入公式后,选中两格,双击单元格右下角的填充柄,一键填充1万行。
方法2:VBA宏(大数据量效率最优)
如果1万行用函数填充卡顿,直接用宏批量处理:
- 按
Alt+F11打开VBA编辑器 - 右键当前工作簿 → 插入 → 模块
- 粘贴代码:
Sub ExtractELRAndMileage() Dim ws As Worksheet Dim lastRow As Long Dim cell As Range Dim regEx As Object Dim matches As Object Set ws = ActiveSheet ' 可改为具体表名,如Sheets("你的工作表名") lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row Set regEx = CreateObject("VBScript.RegExp") ' 正则规则:匹配3位大写字母(ELR) + 空格 + 带小数点的数字(里程) regEx.Pattern = "([A-Z]{3})\s+(\d+\.\d+)" regEx.Global = False For Each cell In ws.Range("A2:A" & lastRow) If regEx.Test(cell.Value) Then Set matches = regEx.Execute(cell.Value) cell.Offset(0, 1).Value = matches(0).SubMatches(0) ' 写入B列(ELR) cell.Offset(0, 2).Value = CDbl(matches(0).SubMatches(1)) ' 写入C列(Mileage) End If Next cell Set regEx = Nothing Set ws = Nothing MsgBox "提取完成!" End Sub
- 按
F5运行,自动完成所有行的提取填充。
提示: 如果你的内容格式有特殊变化,调整正则的Pattern参数即可适配。
内容的提问来源于stack exchange,提问作者NotVeryBright
相关产品推荐
相关产品推荐

