和暦(令和)未対応のEXCELで 日付データを令和対応の和暦に変更する関数です。
VBAの標準モジュールに下のコードを登録して「Excelマクロ有効フォーム」で保存してください。
関数の登録方法は⇒♯000 ユーザー定義関数を登録する方法
登録されたら、シート上からユーザー関数「Gengo」が使用できます。
使い方は
ワークシート上で =Gengo(日付,[表示形式])の関数として使用できます。
表示形式
1 “ge/m/d” R1/6/20
2 “gee/mm/dd” R01/08/03
3 “ggee/m/d” 令1/6/20
4 “ggee/mm/ee” 令01/08/03
5 “ggge年m月d日” 令和1年6月20日
6 “gggee年mm月dd日”令和01年08月03日
【例】
Gengo(2019/5/1) → 令和1年5月1日
Gengo(2019/5/1,1) → R1/5/1
Gengo(2019/5/1,2) → R01/05/01
Function Gengo(GDate As String, Optional GType As Long)
’和暦元号変換関数(令和対応)
Dim i As Long
Dim SDate As Date
’元号日付の設定
Dim Era(1 To 5, 1 To 5)
Era(1, 1) = #1/25/1868#: Era(1, 2) = #7/29/1912#: Era(1, 3) = “M”: Era(1, 4) = “明”: Era(1, 5) = “明治”
Era(2, 1) = #7/30/1912#: Era(2, 2) = #12/24/1926#: Era(2, 3) = “T”: Era(2, 4) = “大”: Era(2, 5) = “大正”
Era(3, 1) = #12/25/1926#: Era(3, 2) = #1/7/1989#: Era(3, 3) = “S”: Era(3, 4) = “昭”: Era(3, 5) = “昭和”
Era(4, 1) = #1/8/1989#: Era(4, 2) = #4/30/2019#: Era(4, 3) = “H”: Era(4, 4) = “平”: Era(4, 5) = “平成”
Era(5, 1) = #5/1/2019#: Era(5, 2) = #1/1/2099#: Era(5, 3) = “R”: Era(5, 4) = “令”: Era(5, 5) = “令和”
On Error GoTo EXITGengo
If IsDate(GDate) = False Then
GoTo EXITGengo
Else
SDate = DateValue(GDate)
If SDate < #1/24/1868# Then
GoTo EXITGengo
End If
For i = 1 To 5
If Era(i, 1) <= SDate And Era(i, 2) >= SDate Then
Exit For
End If
Next
End If
’表示形式の設定
Select Case GType
Case 1
Gengo = Era(i, 3) & Year(GDate)-Year(Era(i, 1)) + 1 & Format(GDate, “/M/D”)
Case 2
Gengo = Era(i, 3) & Format(Year(GDate)-Year(Era(i, 1)) + 1, “00”) & Format(GDate, “/MM/DD”)
Case 3
Gengo = Era(i, 4) & Year(GDate)-Year(Era(i, 1)) + 1 & Format(GDate, “/M/D”)
Case 4
Gengo = Era(i, 4) & Format(Year(GDate)-Year(Era(i, 1)) + 1, “00”) & Format(GDate, “/MM/DD”)
Case 5
Gengo = Era(i, 5) & Year(GDate)-Year(Era(i, 1)) + 1 & Format(GDate, “年M月D日”)
Case 6
Gengo = Era(i, 5) & Format(Year(GDate)-Year(Era(i, 1)) + 1, “00”) & Format(GDate, “年MM月DD日”)
Case Else
Gengo = Era(i, 5) & Format(Year(GDate)-Year(Era(i, 1)) + 1, “0”) & Format(GDate, “年M月D日”)
End Select
Exit Function
EXITGengo: Gengo = GDate
End Function
ここで紹介したコード使用による損害に対しては一切責任は負えません。