這樣做,快速提取省份信息!

週末的時候,有位朋友提問了一個這樣的需求,如下圖:

單元格中有一長串內容,需要從中提取變更前和變更後權利人的省份信息,也就是圖中標紅的信息。

爲了簡化說明,永恆君把上面的問題修改成下圖:

思路方案

如果能有兩個函數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)- 利用正則表達式進行定向提取

歡迎交流!

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