Excel不规则文本提取实战:用技小宝正则公式拆分多尺寸订单

在处理电商定制类订单(如窗帘、拉手、垫子等)时,运营人员经常面临一个棘手问题:客户填写的备注极其随意。没有固定的分隔符,也没有标准的排版,要把里面的“尺寸”单独拎出来录入系统或核算成本,靠常规的Excel分列或MID函数基本行不通。

本文以真实的定制订单数据为例,拆解如何使用技小宝插件的 RegexString 和 Split2Array 两个公式,完成从“非结构化文本”到“结构化数据”的提取。


一、 原始数据问题诊断

来看下面这些真实的客户备注:

宽96*高248长方形一件;宽95*高248长方形一件;宽94*高195长方形一件;合计五件
125宽*225高长方形一件;100宽*235高长方形一件;60宽*135高长方形一件【四面魔术贴一整张】;总4件
宽250*高302长方形一件;宽96*高194长方形一件合计二件不要上面的蕾丝花边

如果要用程序逻辑来提取,难点有三个:

1. 位置倒置:有的是“宽在前”,有的是“数字在前”。

2.符号缺失:中间的连接符有的有星号 *,有的直接连着写。

3. 噪音干扰:夹杂着“长方形一件”、“合计二件”、“【四面魔术贴】”等完全不需要的汉字。

面对这种没有规律的文本,唯一的解法是“描述特征,而不是定位位置”,这正是正则表达式的作用。


二、 提取逻辑与 RegexString 公式构建

我们不去找字符在第几位,而是告诉Excel:“只要符合【宽/高字眼夹着数字】这个特征的,全部给我抓出来。”

1. 规则A:抓取“宽96*高248”格式

正则表达式设计:

([宽]+[\d\.]{1,5}[\*]{0,1}[高]+[\d\.]{1,5})

规则拆解:

* [宽]+ :找“宽”字。

* [\d\.]{1,5} :找紧跟着的1到5位数字(支持带小数点的尺寸)。

* [\*]{0,1} :找星号 *。{0,1} 表示这个星号“有也可以,没有也可以”。

* [高]+[\d\.]{1,5} :找“高”字及其后面的数字。

* 外层的 () :表示把这一整串当作一个结果提出来。

2. 规则B:抓取“125宽*225高”格式

针对数字在前的写法,把数字和汉字的位置互换即可:

([\d\.]{1,5}[宽]+[\*]{0,1}[\d\.]{1,5}[高]+)

3. 组合应用

假设原始备注在 N268 单元格,我们先用规则A去匹配,如果匹配不到(说明不是这种格式),再用规则B去匹配。这里借助 IfEmpty 函数做判断。

=IfEmpty(RegexString(N268,"([宽]+[\d\.]{1,5}[\*]{0,1}[高]+[\d\.]{1,5})",1,0), RegexString(N268,"([\d\.]{1,5}[宽]+[\*]{0,1}[\d\.]{1,5}[高]+)",1,0))

关键参数说明(最后一个数字 0):

RegexString 的第四个参数是提取序号。当填入 0 时,函数会查找文本中的所有符合项,并自动用顿号 、 把它们拼接起来。

例如上面第一条数据,公式执行后的结果是:宽96*高248、宽95*高248、宽94*高195、宽93*高195、宽93*高244

到这一步,我们已经成功把噪音过滤掉了。


三、 使用 Split2Array 进行二次拆分

上一步得到的 宽96*高248、宽95*高248... 是一个合并的字符串。但实际业务中,我们通常需要把第一个尺寸、第二个尺寸分开录入不同的列。

这时就需要用到技小宝的 Split2Array 公式,它的作用是按照指定的符号把文本切开。

语法:

=Split2Array(文本, "分隔符", 第几个)

假设第一步合并后的字符串在 O268 单元格,我们在后续列分别写入:

提取第1个尺寸:

=Split2Array(O268, "、", 1)

提取第2个尺寸:

=Split2Array(O268, "、", 2)

提取第3个尺寸:

=Split2Array(O268, "、", 3)

如果某条订单只有1个尺寸,那么提取第2个的公式会返回空白,不会报错,这保证了表格的整洁。


四、 完整工作流复盘

将上述过程串联起来,整个数据处理流水线如下:

1. 原始数据列 (N列):存放杂乱的客户备注。

2. 中间汇总列 (O列):写入 IfEmpty + RegexString(..., 0) 公式,过滤噪音,提取出所有尺寸并用顿号连接。

3.最终拆分列 (P、Q、R列):分别写入 Split2Array(O列, "、", 1/2/3),将尺寸分配到独立的单元格。

4. 批量执行:选中这三列公式,直接下拉,即可完成成百上千条订单的批量提取。

五、 补充说明

* 关于小数精度:正则中的 [\d\.]{1,5}限制了数字部分最长为5位(例如 192.5)。如果你的产品有更大的尺寸范围(如 1200.55),请将 {1,5} 修改为 {1,7} 或更大的数值。

* 容错处理:为了防止源数据完全缺失导致公式显示错误码,可以在 Split2Array 外面再套一层Excel自带的 IFERROR,即 =IFERROR(Split2Array(...), "")

*函数文档:本文涉及的两个函数均需在安装技小宝插件后使用。具体参数细节可查阅官方文档:

* RegexString说明:https://www.excelapi.com/RegexString.html

* Split2Array说明:https://www.excelapi.com/Split2Array.html

浏览 247
1
5
分享
5 +1
2
1 +1
全部评论 2
 
user_19042982
为什么IP属地取消了
·
回复
 
user_19042982
不错
·
回复