【Excel】令和1年を令和元年表記に変える方法

令和1年を令和元年に
この記事は約8分で読めます。

MicrosoftはwindowsおよびOfficeで更新アップデートによって新元号の令和に対応しました。

このアップデート後であればExcelでも和暦で令和を表記させることができます。

しかし、デフォルトでは令和1年と表記されます。これを令和元年にする方法を紹介します。

令和以外の平成や昭和の元号にも対応できる方法やボタンひとつで変更できる方法も紹介します。

本記事では新元号対応の更新アップデート後であることを前提にしています。

更新アップデートができない環境で令和表記に対応する方法については以下の記事で紹介しています。

紹介動画

まずはこちらの動画をご覧ください。実際に表記を変える設定をしている動画です。動画の後半ではマクロを使って1クリックで切り替える様子もご覧いただけます。

【Excel】令和1年を令和元年にする方法【1クリックマクロもあり】

表示形式のユーザー定義を使う方法

Microsoftが公式で案内している方法です。

基本的にはリンク先に記載されている方法通りですが、ここでは一部変更したうえで少し補足しながら説明します。

適用したいセル、もしくはセル範囲を選択して「セルの書式設定」→「表示形式」の「ユーザー定義」を選択し、種類テキストボックスに次の文字列をコピーして貼り付けて適用します。

[<=43585][$-ja-JP]ggge”年”m”月”d”日”;[>=43831]ggge”年”m”月”d”日”;”令和元年”m”月”d”日”

この文字列は簡単に言うと、2019年4月30日以前と2020年1月1日以降は「元号+数字 年〇月〇日」と表記する(例:平成30年4月30日、令和2年1月1日)、それ以外(つまり2019年5月1日から2019年12月31日)は「令和元年〇月〇日」と表記するという表記設定を意味しています。

ユーザー定義では

[条件1]条件1の書式;[条件2]条件2の書式;それ以外のときの書式

と設定することができます。

43585および43831は日付のシリアル値で1900年1月1日を1としてそこから何日目かを表しています。[<=43585]が2019/4/30以前、[>=43831]が2020年1月1日以降を意味します。

gggは和暦の元号を、eは和暦の年数を表します。

ちなみに「ggg」のところを「gg」に変えると「令、平」といった漢字一文字に、「g」に変えると「R、H」といったアルファベット頭文字になります。

公式の案内では”それ以外の書式”(2019/5/1-2019/12/31)で ggg”元年” としていましたがここを“令和元年”に変えています。

ggg”元年”のままだと、この設定をしたファイルを更新プログラム未適用のコンピュータで開いたときに「平成元年」と表記されてしまうのを防ぐためです。いずれにしても令和元年期間限定の表記なのでgggで表記する必要性はありません。

この方法のメリット

  • ユーザー定義に上記文字列をコピペするだけなので設定がシンプル
  • 西暦に戻すのも表記形式を変更するだけで簡単

この方法のデメリット

  • 令和にしか対応していない。
  • 他のファイルで使うときには都度ユーザー定義を登録する必要がある。

条件付き書式を使う方法

令和以外の元号にも対応させるには条件付き書式を使います。

適用したいセルの条件付き書式で「数式を使用して、書式設定するセルを決定」の数式に

=TEXT(INDIRECT(“RC”,FALSE),”e”)=”1″

を入力し、書式の表示形式でユーザー定義を

ggg”元年”m”月”d”日”

にします。

これは和暦の年数(e)が1のときは元年と表記するという意味になります。

この方法のメリット

  • 令和以外の元号にも対応できる

この方法のデメリット

  • 都度条件付き書式を設定する必要がある
  • 西暦表示に戻すには条件付き書式を削除してから表示形式を変更する必要がある。

条件付き書式を削除しないまま表示形式を西暦に戻しても、条件付き書式の条件が優先されるため和暦で1年に相当する年は条件付き書式で設定した和暦の書式で表示されるためです

ボタンひとつで設定するためのマクロ

上記の設定をマクロで実行するためのコードを紹介します。

表示形式のユーザー定義を設定するマクロ

'//セルの表示形式ユーザー定義を設定
'//2019/5/1 - 12/31 を和暦で元年表記にする
Sub Reiwa()
    Selection.NumberFormatLocal = _
        "[<=43585][$-ja-JP]ggge""年""m""月""d""日""" & _
        ";[>=43831]ggge""年""m""月""d""日""" & _
        ";""令和元年""m""月""d""日"""
End Sub

選択範囲のセル(Selection)に対して NumberFormatLocal プロパティでユーザー定義を設定しています。

条件付き書式を設定するマクロ

'//条件付き書式を追加
'//和暦年数が1のとき元年表記にする
Sub eraAdd()
    Dim fc As FormatCondition   '//条件付き書式
    Dim exp As String           '//条件数式
    '//条件数式=セルの値の和暦年数(e)が1
    exp = "=TEXT(INDIRECT(""RC"",FALSE),""e"")=""1"""
    Selection.NumberFormatLocal = "ggge""年""m""月""d""日"""
    Set fc = Selection.FormatConditions.Add(xlExpression, , exp)
    fc.NumberFormat = "ggg""元年""m""月""d""日"""
End Sub

条件付き書式を追加する前に Selection.NumberFormatLocal で書式設定を和暦表示に切り替えています。(和暦年数1以外のときも和暦で表示させるため)

条件付き書式のFormatConditionsオブジェクトにAddメソッドで追加します。

FormatConditions.Add(Type, Operator, Formula1, Formula2 )

引数 Type に xlExpression(演算)、Formula1に数式を格納した変数 exp をあてています。

条件付き書式を削除するマクロ

'//元年表記の条件付き書式を削除
Sub eraDelete()
    Dim cnt As Long      '//条件付き書式の数
    Dim i As Long
    Dim nfmt As String   '//条件成立時の書式
    cnt = Selection.FormatConditions.Count
    If cnt <> 0 Then
        For i = cnt To 1 Step -1
            nfmt = ""
            On Error Resume Next
                nfmt = Selection.FormatConditions(i).NumberFormat
            On Error GoTo 0
            If nfmt = "ggg""元年""m""月""d""日""" Then
                Selection.FormatConditions(i).Delete
            End If
        Next
    End If
End Sub

選択範囲のセルに設定されている条件付き書式をFormatConditions コレクションからFor ~ Next ステートメントを使って順次取得し、NumberFormat プロパティで書式を取得、取得した書式が元年表記の書式かを判別し、一致した場合にその条件付き書式を削除しています。

ここではFormatConditions コレクションをインデックス番号の末尾から取得します。
( For i = cnt To 1 Step -1 )
先頭から取得すると条件付き書式を削除したあとにインデックス番号がずれてしまいすべての条件付き書式を判定することができなくなります。

マクロの設定方法

これらのマクロをすべてのブックで使えるようにするには個人用マクロブックに保存してください。

個人用マクロブックについてはこちら

他のコンピュータでも使えるようにするにはアドイン形式で保存します。

アドインについてはこちら

保存したマクロをクイックアクセスツールバーに登録すれば1クリックで実行することができるようになります。

クイックアクセスツールバーについてはこちら

条件付き書式を設定するマクロと削除するマクロはセットで登録しておくと便利です。冒頭の動画ではセットで登録して使用する様子がご覧いただけます。

コメント

タイトルとURLをコピーしました