Excel で日付と時刻を使用する方法

文書番号: 214094 - 対象製品
すべて展開する | すべて折りたたむ

目次

概要

この資料では、Microsoft Excel の組み込みの日付関数と時刻関数を使用して複雑な日付や時刻の計算を行う方法について、手順を追って説明します。

Excel では、日付はすべて整数として、時刻はすべて小数として保存されます。この方式により、Excel では、日付や時間を他の数値と同様に加算、減算および比較できます。日付はすべて、この方式で処理されます。

この方式では、シリアル値 1 が 1900/1/1 12:00:00 AM を表します。時刻は .0 〜 .99999 の小数値で保存されます。.0 は 00:00:00 で、.99999 は 23:59:59 です。日付の整数と時刻の小数を組み合わせて、小数部分と整数部分から成る数値を作成できます。たとえば、32331.06 という数値は、1988/7/7 1:26:24 AM を表します。

日付や時刻の複雑な計算を支援するために、Excel には、組み込みの日付関数と時刻関数が数多く用意されています。

TODAY() 関数と NOW() 関数

TODAY 関数では、システム時計に基づいて今日の日付のシリアル値が返され、時刻は含まれません。NOW 関数では、現在の時刻を含む今日の日付のシリアル値が返されます。

シリアル値に基づく日付の並べ替え

Excel では、日付は画面に表示される数値ではなく、日付のシリアル値に基づいて並べ替えられます。このため、Excel で日付を並べ替えると、期待した結果が得られない場合があります。

たとえば、mmmm という日付形式 (月だけが表示される形式) で表示されている一連の日付を並べ替えると、月はアルファベット順ではなく、日付のシリアル値に基づいて並べ替えられます。

シリアル値に基づく日付の比較

日付や時刻の比較にもシリアル値が使用されるため、実際の結果が期待した結果 (表示される値に基づく比較結果) とは異なる場合があります。

たとえば、以下の数式のように、NOW 関数を使用してある日付と現在の日付を比較すると、
   =IF(NOW()=DATEVALUE("92/10/1"),TRUE,FALSE)
現在の日付が 92/10/1 であっても、FALSE が返されます。この数式で TRUE が返されるのは、現在の日付が 92/10/1 12:00:00 AM の場合のみです。数式で 2 つの日付を比較するとき、結果に時刻を含める必要がない場合は、以下に示すように、NOW 関数ではなく TODAY 関数を使用することで、この動作を回避できます。
   =IF(TODAY()=DATEVALUE("92/10/1"),TRUE,FALSE)

日付を使用する数式の操作

今日から将来の特定の日付までの日数を計算する

現在から将来の特定の日付までの日数を計算するには、次の数式を使用します。
   ="yy/mm/dd"-NOW()
"yy/mm/dd" には、将来の日付を入力します。この数式を含むセルの書式は [標準] に設定します。

2 つの日付の間の日数、月数、年数を計算する

開始日をセル A1 に、終了日をセル A2 にそれぞれ入力して、この 2 つの日付の間の日数、月数、年数を計算するには、次の手順を実行します。
  1. 新しいブックを作成します。

    元に戻す画像を拡大する
    Excel ブック


  2. [新しいブック] 作業ウィンドウの [空白のブック] をクリックします。

    元に戻す画像を拡大する
    Microsoft Excel ブック


  3. ブックに次のデータを入力します。
    A1:    94/03/25
    A2:    98/05/01


    元に戻す画像を拡大する
    セル A1 および A2

  4. セル D1 に次の数式を入力します。
    =YEAR(A2)-YEAR(A1)-IF(OR(MONTH(A2)<MONTH(A1),AND(MONTH(A2)=MONTH(A1), 
    DAY(A2)<DAY(A1))),1,0)&" 年 "&MONTH(A2)-MONTH(A1)+IF(AND(MONTH(A2) 
    <=MONTH(A1),DAY(A2)<DAY(A1)),11,IF(AND(MONTH(A2)<MONTH(A1),DAY(A2) 
    >=DAY(A1)),12,IF(AND(MONTH(A2)>MONTH(A1),DAY(A2)<DAY(A1)),-1)))&" か月 
    "&A2-DATE(YEAR(A2),MONTH(A2)-IF(DAY(A2)<DAY(A1),1,0),DAY(A1))&" 日"


    元に戻す画像を拡大する
    セル D1

    : この数式をコピーして貼り付ける場合は、改行が入っていないことを確認してください。改行が入っていると、数式は機能しません。
数式を正しく入力すると、セル D1 に次のように表示されます。
   4 年 1 か月 6 日

元に戻す画像を拡大する
セル D1


日数、月数、および年数を個別の数式で計算する

上記の数式を分割して、以下の表のように日数、月数、年数を別々に計算することもできます。

: これらの数式をコピーして貼り付ける場合は、改行が入っていないことを確認してください。改行が入っていると、数式は機能しません。
   時間の区分              数式
   ------------------------------------------------------------------------
   2 つの日付の間の      =A2-DATE(YEAR(A2),MONTH(A2)-
   日数                  IF(DAY(A2)<DAY(A1),1,0),DAY(A1))&" 日"
   (年数、月数は除外)
   

   2 つの日付の間の      =MONTH(A2)- MONTH(A1)+IF(AND(MONTH(A2)
   月数                  <=MONTH(A1), DAY(A2)<DAY(A1)),11,
   (年数、日数は除外)    IF(AND(MONTH(A2)<MONTH(A1),DAY(A2)>=
                                    DAY(A1)),12,IF(AND(MONTH(A2)>MONTH(A1),
                                    DAY(A2)<DAY(A1)),-1)))&" か月"

   2 つの日付の間の      =YEAR(A2)-YEAR(A1)-IF(OR(MONTH(A2)<
   年数                  MONTH(A1),AND(MONTH(A2)=MONTH(A1),
                                    DAY(A2)<DAY(A1))),1,0)&" 年"
: 上記の各数式で、&" 日"、&" か月"、&" 年" は省略可能です。これらを指定すると、結果が日数 (日)、月数 (か月)、年数 (年) であることを識別できます。

2 つの日付の間の稼働日の日数を計算する

開始日をセル A1 に、終了日をセル A2 にそれぞれ入力して、この 2 つの日付の間の稼働日の日数を計算するには、次の手順を実行します。
  1. 新しいブックを作成します。

    元に戻す画像を拡大する
    Microsoft Excel ブック


  2. [新しいブック] 作業ウィンドウの [空白のブック] をクリックします。

    元に戻す画像を拡大する
    Microsoft Excel ブック


  3. ブックに次のデータを入力します。
    A1:    94/03/25
    A2:    98/05/01
    

    元に戻す画像を拡大する
    セル A1 および A2


  4. セル D1 に次の数式を入力します。
       =NETWORKDAYS(A1,A2)
    

    元に戻す画像を拡大する
    セル D1


    セル D1 に計算結果として "1071" と表示されます。

    元に戻す画像を拡大する
    セル D1

: 数式の計算結果が "#NAME" と表示される場合は、[ツール] メニューの [アドイン] をクリックします。[分析ツール] チェック ボックスをオンにし、[OK] をクリックします。インストールするかどうかを確認するメッセージが表示されたら [はい] をクリックします。

指定の日数後の日付を求める

指定した年数、月数、または日数を加算した日付を求めるには、次の数式を使用します。reference には日付の値または日付が含まれているセル参照、value1value2value3 には加算する年数、月数、日数をそれぞれ入力します。
   =DATE(YEAR(reference)+value1,MONTH(reference)+value2,DAY(reference)+value3)
たとえば、1 か月後の日付を求める場合は、次の数式を使用します。
   =DATE(YEAR(DATEVALUE("96/6/20")),MONTH(DATEVALUE("96/6/20"))+1,
    DAY(DATEVALUE("96/6/20")))

時刻を使用する数式の操作

経過時間を計算する

1 つのセルの値から別のセルの値を引いて、その間の経過時間を求めると、結果は、経過した時間、分、秒を表すシリアル値になります。この数値をわかりやすくするには、結果を含むセルの書式を h:mm という時刻形式に設定します。

以下の例では、セル C2 および D2 に数式 =B2-A2 を入力し、セル C2 の書式が [標準] である場合、このセルには小数 (この場合は、12 時間 45 分を表すシリアル値である 0.53125) が表示されます。
   A1: 開始時刻    B1: 終了時刻      C1: 差         D1: 差
                                        (標準)        (h:mm)
   A2: 6:30 AM   B2: 7:15 PM     C2: 0.53125   D2: 12:45

元に戻す画像を拡大する
セル D2


終了時刻が開始時刻の翌日になる場合は、24 時間の差を考慮に入れる必要があります。この場合は、24 時間を表す数値 1 を加算します。たとえば、以下の表のように、深夜 0 時を挟んだ経過時間を計算する場合を考えます。
   A1: 開始時刻     B1: 終了時刻    C1: 差            D1: 差
                                       (標準)           (h:mm)
   A2: 7:45 PM    B2: 10:30 AM  C2: 0.614583333  D2: 14:45
この表で正しく計算するには、セル C2 と D2 に次の数式を入力します。
   =B2-A2+IF(A2>B2,1)

24 時間を超える時間と分を正しく表示する

24 時間を超える時間を正しく表示するには、ユーザー定義の書式を使用して、次のように、時間のパラメータを角かっこで囲む必要があります。または、英語 (米国) のロケールでは、組み込みの書式である 37:30:55 を使用することもできます。
   [h]:mm

日付を 10 進数値に変換する

シリアル化された日付 (h:mm:ss) を 10 進数 (0.00) に変換するには、シリアル値を 24 時間制に変換して 10 進数に変換する必要があります。以下のように、時間に 24 を掛けます。
   =Time*24
Time は、時刻の書式から 10 進数に変換する数値です。この数値には、セル参照または TIMEVALUE 関数に数値の文字列を指定したものを使用できます。

たとえば、4 時間 30 分を表す "4:30" という時刻がセル A1 に含まれている場合、次の数式を使用します。
   =A1*24
結果は 4.5 です。

セルに日付と時刻の両方が含まれている場合は、次の数式を使用します。
   =(Time-INT(Time))*24
たとえば、セル A1 が "96/6/20 4:30 AM" の場合の数式は次のとおりです。
   =(A1-INT(A1))*24
この場合も結果は 4.5 です。

10 進数値を日付に変換する

10 進数 (0.00) をシリアル化された日付 (h:mm:ss) に変換するには、シリアル値を 24 時間制に変換して 10 進数に変換する必要があります。以下のように、時間を 24 で割ります。
   =Time/24
Time は、10 進数から日付のシリアル値に変換する数値です。この数値には、セル参照または実数を使用できます。たとえば、4 時間 30 分を表す 4.5 という数値が A1 に含まれている場合の数式は次のとおりです。
   =A1/24
結果は 4:30 です。

Mac 版 Microsoft Excel と Windows 版 Microsoft Excel の間でファイルを転送する

デフォルトでは、Mac 版 Excel では 1904 年を基準とした日付方式、Windows 版 Excel では 1900 年を基準とした日付方式が使用されます。つまり、Mac 版 Excel でシリアル値 1 を入力し、書式を日付に設定すると、"1904/1/2 12:00 AM" と表示されますが、Windows 版 Excel では、シリアル値 1 は "1900/1/1 12:00 AM" と表示されます。

Mac 版 Excel から Windows 版 Excel にファイルを転送する場合、この計算方式の違いは、通常は問題になりません。日付の計算方式はファイルごとに保存されているためです。ただし、異なるプラットフォームで作成された、計算方式の異なるファイル間でコピーと貼り付けを行うと、本来の日付から 4 年と 1 日ずれた日付が表示される場合があります。

Windows 版の Excel で 1904 年を基準とした日付方式に変更するには、次の手順を実行します。
  1. [ツール] メニューの [オプション] をクリックします。

    元に戻す画像を拡大する
    Windows 版 Microsoft Excel


  2. [計算方法] タブをクリックし、[1904 年から計算する] チェック ボックスをオンにします。

    元に戻す画像を拡大する
    [オプション] ダイアログ ボックス


Mac 版の Excel で 1900 年を基準とした日付方式に変更するには、次の手順を実行します。
  1. [Excel] メニューの [環境設定] ダイアログ ボックスをクリックします。

    元に戻す画像を拡大する
    Mac 版 Microsoft Excel


  2. [計算方法] をクリックし、[1904 年から計算する] チェック ボックスをオフにします。

    元に戻す画像を拡大する
    [環境設定] ダイアログ ボックス

関連情報

関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
214233 Excel で文字列または数値が意図しない表示形式に変換される
214386 Microsoft Excel での時間の最大値
241072 [XL] [数式] の表示オプションが設定されていると、日付と時刻がシリアル値で表示される
264372 [XL] [セルの書式設定] ダイアログ ボックスの設定を理解して使用する

プロパティ

文書番号: 214094 - 最終更新日: 2006年9月15日 - リビジョン: 6.5
この資料は以下の製品について記述したものです。
  • Microsoft Office Excel 2003
  • Microsoft Excel 2002 Standard Edition
  • Microsoft Excel 2000 Standard Edition
  • Microsoft Excel 97 Standard Edition
キーワード:?
kbnomt kbgraphxlink kbscreenshot kbdatetime kbautomation kbprogramming kbfunctions kbhowtomaster kbmigrate KB214094
"Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。"

フィードバック