Excelの新元号(令和)切り替えの3つの暫定対応方法紹介

2020年7月1日水曜日

Excel 令和 和暦取得

t f B! P L

<引越前Blogの記事を記念に保存しておきます。>

元号が切り替わった際にすぐに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の場合は役立つかもしれませんね!!


何か気になったらGoogle検索で!

このサイトについて


【テンワンナップ】
普段の生活、仕事などでちょっと効率的に、ちょっと便利に、作業等を効率的にできる様な事をまとめていきます。 1Upまではいきませんが、0.1Upで生産性向上といったところですかね。Excel作業も0.1UPして生産性向上を図る為の小技も紹介していきます。

注目の投稿

【Gmailとスプレッドシート】AIのGeminiを使って、条件に合ったメールを一瞬で抽出するスクリプトを作成してもらった過程を紹介(自分では1行もプログラミングせずにGeminiに作ってもらうための具体的なプロンプトの入力内容を紹介。)

はじめに:Gmailとスプレッドシートの連携を簡単に実現したい 日々、メールがどんどん溜まっていき、重要な情報を取り出すのが面倒になったことはありませんか?特に、Gmail内で過去のメールから特定の情報を抽出したり、スプレッドシートに整理したりする作業は時間がかかりますよね。 今...

人気の投稿

このブログを検索

カウンター

連絡フォーム

名前

メール *

メッセージ *

rakuten

QooQ