单元格中有一长串内容,需要从中提取变更前和变更后权利人的省份信息,也就是图中标红的信息。
为了简化说明,永恒君把上面的问题修改成下图:
思路方案
如果能有两个函数sf()、sfe(),直接调用sf(D6)、sfe(D6),就可以得出变更前、变更后的省份信息,然后再向下拖动,这样是不是就比较方便了?
那这两个函数用什么思路来提取呢?
永恒君觉得,正则表达式可能会比较方便。永恒君把整个提取的过程写成了一个自定义函数,如下
这个是sf()函数
Function sf(i As String) As String
Dim a As Object
Set a = CreateObject("VBSCRIPT.REGEXP")
a.Pattern = " (\S)+省|(\S)+自治区|上海市|北京市|天津市|重庆市"
a.Global = True
sf = a.Execute(i)(0)
Set a = Nothing
End Function
其中a.Pattern = " (\S)+省|(\S)+自治区|上海市|北京市|天津市|重庆市"
则是我们需要的正则表达式。
这个是sfe()函数
Function sfe(i As String) As String
Dim a As Object
Set a = CreateObject("VBSCRIPT.REGEXP")
a.Pattern = " (\S)+省|(\S)+自治区|上海市|北京市|天津市|重庆市"
a.Global = True
sfe = a.Execute(i)(1)
Set a = Nothing
End Function
写好之后,展示一下效果:
这样就可以快速的将里面的省份信息提取出来了。
如果你要提取其他格式的内容,也可以修改a.Pattern后面的内容,一样可以得到想要的结果。
相关阅读:
正则表达式,查找、筛选数据的又一利器!
这个查找、筛选数据的利器,你不能不会!
技巧 | 正则表达式实例 – 快速提取爱奇艺视频目录
Excel vba 实例(8)- 利用正则表达式进行定向提取
转载请注明:永恒君的百宝箱 » 这样做,快速提取省份信息!