TechRepublicのメンバーであるZeeさん(仮にZeeとします)が、日付計算について助けを求めてきました。小さな矯正施設に勤務するZeeさんは、以下の情報が記載されたExcelスプレッドシートを持っていました。
- 入国日
- 出発予定日
Zee 氏はそのデータを使用して、「年、月、日数での滞在期間」と「総滞在期間の割合」という 2 つの新しい列を計算したいと考えました。
幸いなことに、ExcelにはDATEDIFという組み込み関数があり、これを使うとカレンダーの経過時間を簡単に計算できます。Zeeにサンプルの解決策を送ったところ、彼女はまさに思い描いていた通りだと返信してくれました。
この簡単な日付計算チュートリアルでは、Zeeさんが要求した出力をどのように生成したかを説明します。スクリーンショットはExcel 2000で撮影したものですが、Excel 97、2000、2002でも手順は同じです。
簡単な部分:日数での経過日数
Zee のニーズは、未払い請求書の経過日数を計算する必要があるビジネススプレッドシートユーザーのニーズと似ています。Zee の入力日は請求書の日付のようなものです。入力日または請求書の日付がセル A2 に保存されており、その日付から現在日付までの経過日数をセル B2 に表示したいとします。そのためには、セル B2 に次のコードを入力します:
=NOW()-A2
次に、ExcelはセルA2に入力された日付値をNOW()から減算することで日数を計算し、現在のシステム日付を返します。未払い請求書をその日数列で降順で並べ替えると、売掛金の経過日数レポートが作成されます。
Zeeのニーズ:「これまでの滞在期間」
Zeeにとっての問題は、経過日数を計算するだけでは不十分だということです。Zeeは、その期間を「X年、Yヶ月、Z日」という形式で表現したいと考えています。
では、800日のような整数を、適切な年数、月数、日数に変換するにはどうすればよいでしょうか。スプレッドシートが普及した初期の頃は、このような結果を得るには、開始日と終了日の月、日、年の各要素を解析し、その後、正しい結果を表示するために、いくつかのIfテストの手順を踏む必要がありました。
DATEDIF日付差関数は次の形式をとります:
=DATEDIF(begin_date,end_date,calendar_ unit_option)
begin_date と end_date パラメータは、日付を返す式、または日付を含むセルへの参照でなければなりません。calendar_unit_option パラメータの選択肢の多さが、一部のExcelユーザーがこの関数の使用をためらう理由です。図Aに示すZeeのソリューションの背後にある関数を見てみましょう。
図A |
![]() |
この日付計算の結果を生成するために、DATEDIF 関数を使用しました。 |
リスト A は、図 A の C2 の式がどのようになるかを示しています。
この数式は、複数の関数の結果を1つの文字列に連結(結合)します。DATEDIF関数は数値を、IFテストは適切なテキストラベルを提供します。(年と月のラベルの後にスペースが入っていることに注意してください。)
Zeeは、年数、月数、日数が0の場合でも、3つのラベルすべてを表示したいと考えています。そのため、結果が文法的に正しいことを確認するために、IF関数を使用して各値をチェックする必要がありました。値が1の場合、IFテストは単数形の年、月、または日のいずれかを返します。それ以外の場合、つまりDATEDIF関数が0または1より大きい数値を返す場合、IFテストは複数形を返します。
DATEDIF関数の使い方
Zeeさんのようなテキストラベルは不要で、経過時間を年、月、日で計算したい場合の手順をご紹介します。開始日と終了日がA2とB2にあると仮定し、3つのコア関数呼び出しを別々の列に入力します。式の動作は以下のとおりです。
- 年。式DATEDIF(A2,B2,”Y”)の「Y」パラメータは、2つの日付間の年数を返すように関数に指示します。
- 月数。式DATEDIF(A2,B2,”YM”)は、年に関係なく、2つの日付間の月数を返します。
- 日数。最後に、式DATEDIF(A2,B2,”MD”)は、月と年に関係なく、指定された期間の日数を返します。
表 A には、DATEDIF を使用するときに使用できるすべての測定単位オプションの簡単な概要が示されています。
オプション | 返品 |
「Y」 | 日付間の年数 |
「M」 | 日付間の完全な月数 |
「D」 | 日付間の日数 |
「YM」 | 年を無視した日付間の月数 |
「MD」 | 月と年を無視した日付間の日数 |
「YD」 | 年を無視した日付間の日数 |
DATEDIFオプションによる測定単位
ジーのこれまでの滞在期間
ジーがもう一つ知りたいのは、各人の滞在期間が何パーセント経過したかということです。
つまり、(これまでの滞在日数)÷(予定滞在日数)という計算結果を知りたかったのです。
図Bはサンプル計算の結果を示しています。このチュートリアルは主にDATEDIF関数について解説するため、式
=DATEDIF(A2,C2,”D”)/DATEDIF(A2,B2,”D”) を使用しました。
この数式では、DATEDIF(A2,C2)”D”) は入国日から指定した日付までの日数を返します。DATEDIF(A2,B2,”D”) は入国日から出発予定日までの日数を返します。
もちろん、この場合、DATEDIF関数を使わなくてもZeeの結果を得ることは可能です。2つの日付を減算すると、その間の日数も得られるため、数式 =(C2-A2)/(B2-A2) でも同じパーセンテージが得られます。
図B |
![]() |
DATEDIF 関数を使用すると、経過時間の割合を簡単に計算できます。 |
Excelで成功する
このヒントについてコメントしたり、Excel for business ソリューションの使用経験を共有したりするには、コメントを投稿するか、メッセージをお送りください。