这样做,快速提取省份信息!

周末的时候,有位朋友提问了一个这样的需求,如下图:

单元格中有一长串内容,需要从中提取变更前和变更后权利人的省份信息,也就是图中标红的信息。

为了简化说明,永恒君把上面的问题修改成下图:

思路方案

如果能有两个函数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)- 利用正则表达式进行定向提取

欢迎交流!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章