10/12/2016

Excel。TEXT&DATEDIF。開始日から終了日までの期間を年ヶ月で表示するにはどうしたらいい?


Excel。開始日から終了日までの期間を年ヶ月で表示するにはどうしたらいい?

<TEXT関数とDATEDIF関数>


開始日から終了日の間の日数を、「年月日」で表示するのではなくて、
その間の期間を「年ヶ月」という形で表示したいのですが、
うまくいかないので困っているというリクエストがありました。

そこで、今回は、期間を年ヶ月で表示する方法をご紹介していきましょう。

下記のような表があります。

B列に入会日があって、今日までの入会期間を求めるというのがC列。という表です。

このような期間を求める時に登場するのが、DATEDIF関数ですね。

このDATEDIF関数は、関数挿入のダイアログボックスから見つけることが出来ない関数なので、
直接入力していく必要があります。

では、C2に次の数式を設定してみましょう。

=DATEDIF(B2,TODAY(),"y")

そして数式を入力して、オートフィルで数式をコピーしておきましょう。

=DATEDIF(B2,TODAY(),"y")

は、その間の年数を算出してくれます。
よって年数を求めるだけでしたら、この数式でいいのですが、求めたいのは「年ヶ月」。

そこで、&を使って、文字と数式を結合して、次のように数式を修正していきましょう。

=DATEDIF(B2,TODAY(),"y")&"年"&DATEDIF(B2,TODAY(),"ym")&"ヶ月"


そして、オートフィルで改めて、数式をコピーしてみましょう。

どうでしょうか?
今日までの期間を「年ヶ月」で表示することが出来ましたね。
ちなみに、数式に追加した、

DATEDIF(B2,TODAY(),"ym")

これは、年を除いた月数を求めることが出来る数式ですね。

しかし、確かに、「年ヶ月」で表示は出来たのですが、C2とC7。

“0ヶ月”と表示されていますが、これ、なんかカッコ悪いですよね。
“0ヶ月”だったら、表示しないで、何年。と表示できた方がいいですよね。

IF関数を使って判断させるようにしてもいいのでしょうけれど、0ヶ月かどうかを判断させて、
それによって、算出方法を変えられるようにするとしたら、数式が煩雑になってしまいます。

そこで、TEXT関数を使ってみると、今回の0ヶ月を非表示にするように変更していきましょう。

このTEXT関数は、表示形式を変更設定してくれる関数ですね。
でどのように使うのか?
というと、0(ゼロ)だったら、表示しないようにしたいわけです。

このBLOGでも度々登場しているテクニックですが、表示を消したいときには、
表示形式のユーザー定義を;;;(ゼミコロン×3)にすると良かったわけですよね。

となると、ユーザー定義で、”0年;;”と”0月;;”としてあげればいいわけですね。

表示形式は、正数 ; 負数 ; 零 ; 文字 の順番で表示方法を設定しておりますので、
”0年;;”とすれば、いいわけです。

では、C2の数式を次のように修正してみましょう。

=TEXT(DATEDIF(B2,TODAY(),"y"),"0年;;")&TEXT(DATEDIF(B2,TODAY(),"ym"),"0ヶ月;;")

あとは、オートフィルで数式をコピーしましょう。

これで、完成しましたね。

このように、単に、「年ヶ月」を表示させる方法をプラスアルファして、
0ヶ月などの0を非表示する方法も加えてみました。

何か機会がありましたら、
TEXT関数とDATEDIF関数の組み合わせを使ってみてはいかがでしょうか?