電子書籍の厳選無料作品が豊富!

エクセルを利用しています。
元号と年から西暦年を求める関数がわかりません。
VBEで関数を作成したいのですが

' @summary 元号gと年yから西暦年を求める
' @param g 元号
' @param y 年
' @z 西暦年
' @pre g = /^(明治|大正|昭和|平成)$/ And y >= 1
' @post z >= 1868 Or z = -1 (エラー時)
Function toSeireki(g As String, y As Integer) As Integer
○○○○
End Function

○○○○にどのように入れればいいのかわかりません
なので方法を知っている方いれば教えていただきたいです

A 回答 (2件)

セルに日付シリアル値がある場合


見た目を西暦に変えるなら書式yyyy/mm/ddを設定。
文字列にするなら別セルに =TEXT(A3,"yyyy/mm/dd")。
VBAならFormat関数
ーー
昭和29年とかある場合
Sub test01()
a = "昭和29年"
a = "昭和29年"
b = Format(DateValue(a & "1月1日"), "yyyy/mm/dd")
MsgBox b
MsgBox Left(b, 4)
End Sub
29は半角・全角数字でもOKでした。
ーー
平成1年1月1日は昭和でしたがOK[でした。
Sub test02()
a = "平成1年"
b = Format(DateValue(a & "1月1日"), "yyyy/mm/dd")
MsgBox b
MsgBox Left(b, 4)
End Sub
ーー
平成元年はダメでした。昭和も同じ。1月1日を全角化してもダメ。
Sub test02()
a = "平成元年"
b = Format(DateValue(a & "1月1日"), "yyyy/mm/dd")
MsgBox b
MsgBox Left(b, 4)
End Sub
ーー
Sub test04()
a = "平成19年"
nen = Val(Mid(a, 3, Len(a) - 3))
MsgBox nen
s = Mid(a, 1, 2)
Select Case s
Case "平成"
snen = nen + 1988
Case "昭和"
snen = nen + 1925
Case "大正"
snen = nen + 1911
Case "明治"
snen = nen + 1867
End Select
MsgBox snen
End Sub
を参考に関数化してください。
    • good
    • 0

日付型に変換してYearを求めれば良いだけでは?



Function toSeireki(g As String, y As Integer) As Integer
 On Error Resume Next
 toSeireki = -1
 toSeireki = Year(DateValue(g & y & "/1/1"))
End Function

Sub Test()
  MsgBox toSeireki("平成", 19)
End Sub
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!