编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

利用分组法三段式拆分中英文混杂字符串

wxchong 2024-12-20 19:09:22 开源技术 46 ℃ 0 评论

一、题目

如下图所示,对A列单元格中VBA语句进行三段式拆分,要求一次性提取序号、英文和中文释义:

提取结果:

二、解题思路

首先观察A列各单元格混杂字符串的结构特点:

1. 序号基本由圆括号和数字组成,个别缺左半边括号,也有的没有任何括号。

2. 英文语句前面有的有空格单元格,有的没有。

3. 英文语句和中文释义之间有有一个单引号隔开,但单引号有英文半角和全角之分,1-13单元格为半角单引号,14以后单引号为全角单引号。

4. 综上所述,Pattern属性值为:

.Pattern = "(.*?\s*)(?=[A-Z])([A-Z].+)['']+(?=.)(.+)"

三、VBE截图

四、代码分享

'中英文拆分

Sub 中英文拆分1()

Dim regx As Object, rng, mat, m, n%

Set regx = CreateObject("VBScript.regexp")

With regx

.Global = True

.Pattern = "(.*?\s*)(?=[A-Z])([A-Z].+)['']+(?=.)(.+)"

For Each rng In [a2:a23]

n = n + 1

Set mat = .Execute(rng)

For Each m In mat

Cells(n + 1, 3) = .Replace(m, "$1")

Cells(n + 1, 4) = .Replace(m, "$2")

Cells(n + 1, 5) = .Replace(m, "$3")

Next

Next

End With

End Sub

五、总结

1. 本例虽然给出了4种VBE截图,其实顶多算两种写法,重在温习循环法和单元格对象的使用方法。

2. 中英文拆分的关键点在于元字符的熟练使用,在设置Pattern属性值时要仔细分析混杂字符串的特点,按照要求的条件进行针对性设置。。

3. 要想三段式匹配,本例使用了分组法,重在温习分组的使用,希望大家能熟练掌握。

4. 本例代码在中英文字符串拆分方面很有用,比工作内置函数LEFT\LEN\LENB\FIND等查找方法方便高效太多,而且格式整齐,正是拆分希望看到的结果,完美结果。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表