ExcelVBAで正規表現を使って対象文字列から特定パターンに合致する文字列を抽出する。
やりたいこと
下の文字列から「1868」のような数字4桁を抽出する
明治 1868/10/23~1912/7/29 大正 1912/7/30~1926/12/24 昭和 1926/12/25~1989/1/7 平成 1989/1/8~2019/4/30 令和 2019/5/1~
ソースコード
バージョン1909 Option Explicit Function 西暦年を取得する(日付セル) Dim regex As Object Dim strPattern As String Dim matches Dim i As Integer Dim retStr As String ' 西暦年(数字4字)を抽出パターンに設定 strPattern = "\d\d\d\d" Set regex = CreateObject("VBScript.RegExp") With regex .Pattern = strPattern .Global = True '文字列全体を検索対象にする End With ' パターンにマッチする文字列を抽出して連結 Set matches = regex.Execute(日付セル) If matches.Count > 0 Then For i = 0 To matches.Count - 1 retStr = retStr & matches(i).Value & "," Next End If ' 末尾の','を削除 retStr = Left(retStr, Len(retStr) - 1) Set matches = Nothing Set regex = Nothing 西暦年を取得する = retStr End Function
実行結果
明治 1868/10/23~1912/7/29 大正 1912/7/30~1926/12/24 昭和 1926/12/25~1989/1/7 平成 1989/1/8~2019/4/30 令和 2019/5/1~ =西暦年を取得する(A1) 1868,1912,1912,1926,1926,1989,1989,2019,2019