元号が切り替わった際にすぐにExcelが対応できないかもしれないので、その際の暫定対応を考えました。考えた方法は3つ。コピペでOKの簡単な対応です。書式だけでなんとかする方法など。以下紹介します。
社内LAN等でOfficeのアップデートが使えない時などにも使えます!!
※「令和」に合わせてアップデートしました。
※【2019/04/25追記】令和元年にする場合を追記
1.改元対策として、新元号(令和)対応をセルのユーザ書式でなんとかする方法
セルの書式で2019/5/1以降の場合に「令和1年」と固定にしてしまうのです。
※ただし、「令和1年」で固定してしまうので、2019年内限定の暫定対応です。
セルの書式に条件を付けて和暦を表示するようにする。
表示形式-分類-ユーザー定義を選択し、以下を[種類]に入力。
[>=43586]"令和1年"m"月"d"日";[$-411]ggge"年"m"月"d"日";@
※【2019/04/25追記】令和元年としたい場合は、固定文字の部分を”元年”としちゃいます。
[>=43586]"令和元年"m"月"d"日";[$-411]ggge"年"m"月"d"日";@
↓こんな感じです。
そうすると、セルの値が 2019/5/1 以上の場合に「令和1年」m月d日という表示形式になります。
(それ以外の場合は、gggeのいつもの和暦が表示されます。)
この方法は、直接セルの値を和暦書式で表示しているExcelの場合に役立ちますね。
ただ、固定で”1年”としているので12/31までしかつかえません。
2.改元対策として、Excel関数のIf文で2019/5/1以降の時は、自分で新元号の和暦を組み立てる。
出力対象のセルの書式を和暦を表示するようにします。
↓セルの書式で
セルにIF分を設定します。
=IF(B9>=DATE(2019,5,1),"令和" & YEAR(B9)-2018 & "年" & MONTH(B9) & "月" & DAY(B9) & "日",B9)
※B9セルが表示対象の日付けの入ったセル
このIF文で2019/5/1以上の場合は、
"令和" & YEAR(B9)-2018 & "年" & MONTH(B9) & "月" & DAY(B9) & "日"という形で表示されます。
※YEAR(B9)-2018としているのは、西暦の年から2018を減算した値が和暦の年となる為です。
それ以外の場合は、
B9の値そのまま表示⇒セルの書式で普通に和暦で表示されます。
この方法の場合は、1年限定ではないのでそのまま使えますね。
ただ、日付の入っているセルと別のセルを使うので既存のファイルがある場合は多少の手直しが必要になりますね。
※【2019/04/25追記】令和元年としたい場合は、"令和1年"という文字列を”令和元年”に置き換えちゃいます。
上記で作成したIF分を更にSUBSTITUTEでくくります。
=SUBSTITUTE(IF(B9>=DATE(2019,5,1),"令和" & YEAR(B9)-2018 & "年" & MONTH(B9) & "月" & DAY(B9) & "日",B9),"令和1年","令和元年")
↓結果はこんな感じ
3.改元対策として、和暦取得関数を作ってしまう。
VBAを利用して、和暦を取得できる関数を作ってしまいます。
以下の通りのFunctionを作ります。
'-----------------------------------------
'関数名 :和暦取得
'機能 :入力された西暦日付から和暦日付を返却する
'入力項目:西暦日付
'-----------------------------------------
Function 和暦取得(西暦日付 As Date) As String
Select Case True
Case 西暦日付 >= DateValue("2019/05/01")
和暦取得 = "令和" & Year(西暦日付) - 2018
Case 西暦日付 >= DateValue("1989/01/08")
和暦取得 = "平成" & Year(西暦日付) - 1988
Case 西暦日付 >= DateValue("1926/12/25")
和暦取得 = "昭和" & Year(西暦日付) - 1925
Case 西暦日付 >= DateValue("1912/07/30")
和暦取得 = "大正" & Year(西暦日付) - 1911
Case Else
和暦取得 = "明治" & Year(西暦日付) - 1867
End Select
和暦取得 = 和暦取得 & "年" & Month(西暦日付) & "月" & Day(西暦日付) & "日"
End Function
後は、表示したいセルに
=和暦取得(B9)
と入力するだけです。
この方法が一番使い方は簡単なんですが・・・
マクロ付のファイルに切り替えなければならない点が難点です。
2.と同様日付の入ったセルとは別のセルが必要です。
※【2019/04/25追記】令和元年としたい場合は、最終結果が"xx1年"という文字列だった場合は、"1年"を”元年”に置き換えちゃいます。
上記で作成したFunctionのEnd Functionの直前に以下のIF分を追加します。
If 和暦取得 Like "令和1年*" Or 和暦取得 Like "平成1年*" Or 和暦取得 Like "昭和1年*" Or 和暦取得 Like "大正1年*" Or 和暦取得 Like "明治1年*" Then
和暦取得 = Replace(和暦取得, "1年", "元年")
End If
↓こんな感じ
一旦、簡単な3つの方法を考えましたので、メモしておきます。
ま、そうそうにOfficeのアップデートが入って、普通に切り替わってくれるだろうと思いますが、
ネットワークに繋がっていないとか、バージョンが古いExcelの場合は役立つかもしれませんね!!
0 件のコメント:
コメントを投稿