赵晓武 发表于 2022-2-8 02:17:36


非常感谢大佬
还有几个小问题,比如:泉芯家乡花生汤圆400g会成 泉芯家乡花生汤圆g400
艾可思奖杯鸭太空杯500ML SFC-616 会成 艾可思奖杯鸭太空杯6500ml sfc61
这个可不可以再优化一下呢,如果碰到有数字与英文的时候,就按原来的顺序提取可以吗!

百卍威 发表于 2022-2-9 04:56:35

Sub 正则替换()
r = Cells(Rows.Count, 2).End(xlUp).Row
ar = Range("B2").Resize(r, 2)
Set reg = CreateObject("VBScript.RegExp")
reg.Global = True
reg.Pattern = "[^\w一-龥 \*]+"
For i = 1 To r - 1
ar(i, 1) = reg.Replace(LCase(ar(i, 1)), "")
Next
reg.Pattern = "^(\W*)(\w[\w\* 包袋盒支片]*)([\d\D]*)$"
For i = 1 To r - 1
ar(i, 2) = reg.Replace(ar(i, 1), "$2")
ar(i, 1) = reg.Replace(ar(i, 1), "$1$3$2")
Next
Range("L2").Resize(r, 2) = ar
End Sub

许小愿 发表于 2022-2-11 07:49:13

太完美了,多想要的效果,

联谊主任 发表于 2022-2-14 08:21:38

\d+\w+(\s)?(\s)?(\w+)?-?(\d+)?(\*\d+[包袋]?)?(\*\d+[包袋]?)?

忆念 发表于 2022-2-17 04:57:37

Sub RegExp()
Dim RegExp, i%, Match
For i = 2 To Range("B" & Rows.Count).End(xlUp).Row
Set RegExp = CreateObject("vbscript.regexp")
RegExp.Pattern = "\d+\w+(\s)?(\s)?(\w+)?-?(\d+)?(\*\d+[包袋]?)?(\*\d+[包袋]?)?"
RegExp.Global = True
Cells(i, 4) = LCase(RegExp.Execute(Cells(i, 2))(0))
Cells(i, 5) = LCase(RegExp.Replace(Cells(i, 2), "$1") & RegExp.Execute(Cells(i, 2))(0))
Next i
End Sub

沈高峰 发表于 2022-2-17 12:35:50

=LOWER(REPLACEB(B2,SEARCHB("?",B2),2*LEN(B2)-LENB(B2),"")&MIDB(B2,SEARCHB("?",B2),2*LEN(B2)-LENB(B2)))

最小的束缚 发表于 2022-2-28 23:40:51

非常感谢大佬,
页: 1 2 [3]
查看完整版本: 求大神帮写一个正则表达式