2022年4月 プログラムの話 その1 | 初めての犬飼い日記

初めての犬飼い日記

シゲという名前の保護犬を飼うことになったアラフォーオッサンの記録です

 

今回もEXCELの備忘録ですニヒヒ

 

EXCELで日付を扱う場合、ワークシート上で計算に使用できるのは、1900/1/1 ~ 9999/12/31 の範囲であることを御存じでしょうか?

 

VBAのDATE型であれば、100/1/1 ~ 9999/12/31 の範囲で計算を行うことが可能となります。

 

しかしですね、先述の通りにワークシートのセルで扱えるのは 1900/1/1 以降の日付となるので、VBAで計算した結果がそれより以前の日付だった場合にはエラー表示となってしまいます。

 

それでも、どうしても古い日付を表示したい!

 

というのであれば、DATE型ではなく、文字列に変換してやることで表示は可能です。

勿論、DATE型ではないので計算には使用できませんけど…滝汗

 

あとですね、西暦→和暦 への変換をしたいというのもよくある話だと思うのですよ。

 

2022/4/5  令和4年4月5日

 

こういうやつですね真顔

実は最近のEXCELであれば、普通に変換してくれます。

但し、先述の通り 1900/1/1 以降の日付しか受け付けてくれませんので…

 

明治

大正

昭和

平成

令和

 

の5つの元号のみが変換対象となっておりまして、それより以前の 慶応 とか 元治 とかへの変換は、当然ながら出来ません。

 

それでも、どうしても古い元号を表示したい!

 

という人も居るかと思います。

では、どうすればいいのか…?

 

作ればいいのです!ニヒヒ

 

古い元号を使用する為に必要な情報は、元号、開始年月日、終了年月日の3つとなります。ただ、何度も書いていますが日付型は使用できませんので、年・月・日を分割して管理します。

 

元号・開始年・開始月・開始日・終了年・終了月・終了日

 

元号1つ辺りに、この7項目が必要となります。

これらを効率よく管理する為にEXCELのテーブルという機能を使用します。

流石に南北朝時代(同時に2つの元号が存在する)を含んでしまうと、実装が超絶面倒臭くなるので、統一後の 応永 からのデータを入力したのが下図となります。

 

 

実際は 令和 まで入力してあります。

令和はまだ終わっていないので、終了年月日を 9999/12/31 としてあります。

この終了年月日は 令和7981年12月31日 となりますね!笑い泣き

 

テーブルには好きな名前が付けられます。

今回は 『 T_元号設定 』 という名前にしました。

T は Table (テーブル)の T です。

 

と、ここまでが前準備。

ここからがプログラミングの時間なのですが、長くなったのでいったん切ります。

 

 

 

完成後に変換した結果はこんな感じになります。

A列に変換元となる日付を入力すると、B列に和暦に変換された文字列が表示されます。

B列の文字列を更に西暦に再変換したものがC列となります。

 

 

7行目に注目してほしいのですが、1900/1/1 が 1899/12/31 と変換されていますね。

これは随分と長い間放置されたままになっている EXCEL の不具合なのです。

修正されない理由は以下のリンクからどうぞ。

 

 

1900/1/1 ~ 1900/2/29 の間の日付を扱う際は注意しましょう。

というわけで、今回はこの辺で。

 

次回は変換する為のメソッドを載せる予定ですニヤニヤ