如何从Excel字符串列中提取计量单位及对应关联数值
Excel 批量提取字符串中前置数值+计量单位方案
需求背景
现有Excel表内超1000行字符串类型数据,需要从每行中提取关联的前置数值和对应计量单位,数值始终位于计量单位之前,预期输出示例为25 kg、1000L。
参考待处理样例字符串:ZALTATA MA177-445 IBCC 1000L,预期提取结果为1000L。
实现方案
方案1:Excel 365 / WPS 最新版(公式直接实现)
直接调用内置正则提取函数即可,公式如下:
=REGEXEXTRACT(A1,"\d+\s?([kKmMgG][lLgG]|[lLmMcC][mM]?)")
- 公式中
A1替换为待处理字符串所在的单元格 \d+匹配连续的前置数值,\s?兼容数值和单位之间可选的空格- 括号内为预设的常用计量单位匹配规则(包含kg/g/L/ml/m/cm等),如果涉及业务专属单位,直接修改该部分规则即可
- 公式输入完成后下拉填充,1000行数据可在数秒内完成全部提取
方案2:旧版Excel(无内置正则函数,VBA自定义函数实现)
- 按下
Alt+F11打开VBA编辑器,依次点击「插入」-「模块」 - 在模块编辑页粘贴如下代码:
Function ExtractNumAndUnit(rng As Range) As String Dim regEx As Object Set regEx = CreateObject("VBScript.RegExp") ' 正则规则可根据实际单位需求调整 regEx.Pattern = "\d+\s?([kKmMgG][lLgG]|[lLmMcC][mM]?)" regEx.Global = False If regEx.Test(rng.Value) Then ExtractNumAndUnit = regEx.Execute(rng.Value)(0) Else ExtractNumAndUnit = "无匹配结果" End If End Function
- 将文件保存为「启用宏的工作簿(.xlsm)」格式,回到工作表后在空白单元格输入
=ExtractNumAndUnit(A1)即可调用该函数,下拉完成批量提取。
内容的提问来源于stack exchange,提问作者Michael Rezaei
相关产品推荐
相关产品推荐

