本ページは公開が終了した情報の複製であり、掲載時点での情報です。本ページに記載されている内容について各所に問い合わせることはご遠慮下さい。
サポート技術情報

Q&A (日数/時間計算編)

文書番号: 401700

最終更新日: 1997/10/20


この資料は以下の製品について記述したものです。


この記事は、以前は次の ID で公開されていました: JP401700

概要

本文書は、Excel 5.0 での日数および時間計算に関する Q&A 集です。Excel 5.0 の ヘルプには多くの情報が記述されています。まず [?] - [製品サポート] コマンド
を選択してください。この中には、Excel をお使い頂く上でのご注意や Q&A 集な ど、テクニカル サポートからの情報が登録されています。
ここでは、その中に重複するものもありますが、書き漏れているもの、補足説明
が必要なものを用意しました。新しい情報が入りしだい、更新していきます。

日数および時間の計算に関する基本

Excel 5.0 で日数および時間の計算を行なうときに基本となるものは「シリアル値」 です。整数の「 1 」を「 1 日 (24 時間) 」として取り扱います。そのため「 1 」は、日 付を表わす場合「 1900年1 月 1 日」を意味します。また時間を表わす場合は「 24 時間 (1 日) 」を意味します。
NOW 関数などで算出した日付と時間の両方を取り扱うデータの場合は、整数の部分
が日付を、小数点以下の部分が時間を表現するということになります。そのため、
1994/08/02 13:56 (1994 年 8 月 2 日午後 1 時 56 分) は、34548.58115 という
数値で表現されるということになります。
ワークシート上でシリアル値として扱われる数値がどのように表示されるかという
ことは、そのセルにどのような表示形式が設定されているかによって異なりますの
で注意が必要です。シリアル値で表現することができる日数は、1900 年 1 月 1 日
から 2078 年 12 月 31 日までです。なお、[ツール] - [オプション] コマンドの
[計算方法] パネル、[ブック オプション] グループの [1904年から計算] チェッ
ク ボックスがオンになっている場合には、「 0 」が「 1904 年 1 月 1 日」を表わす 値になり、シリアル値で表現することのできる日数が、1904 年 1 月 1 日から
2078 年 12 月 31 日までとなりますのでご注意ください。
なお本文書中で使用されている関数の詳細については、以下の方法で参照して
ください。
  1. Excel 5.0 のメニューより、[?] - [目次] コマンドを実行します。
  2. Excel 5.0 のヘルプファイルが起動します。
  3. [Microsoft Excel オンライン リファレンス] を選択します。
  4. [機能詳細 ワークシート関数リファレンス] を選択します。
  5. [ワークシート関数一覧 (アルファベット順)] で参照することができます。

Excel 5.0 での日数/時間計算に関しての機能強化点

質問

Excel 5.0 が以前のバージョンから、日数/時間に関して機能を強化された点は
ありますか。

回答

Excel 5.0 では日付、時間計算に関する 4 つのワークシート関数と 2 種類の表示形 式が追加されました。
  DATEDIF
   ̄ ̄ ̄ ̄
    指定された期間内の日数、月数、または年数を返します。
        DATEDIF(開始日 , 終了日 , 単位)
    開始日・・・・・期間の開始日を指定します。
    終了日・・・・・期間の終了日を指定します。
    単位・・・・・・・ 戻り値の単位と種類を、単位を表す文字列で指定します。
            単位戻り値の単位と種類
             "Y"期間内の満年数
             "M"期間内の満月数
             "D"期間内の満日数
             "MD"1 か月未満の日数
             "YM"1年未満の月数
             "YD"1年未満の日数
      開始日と終了日には、"93/1/30" や "1-30-93" のような日付を表す文字列、ある
     いは日付に対応するシリアル値を指定することができます。
      使用例
            DATEDIF("1/1/92","1/1/94","Y")=2
            DATEDIF("6/1/93","6/15/94","YD")=14
            DATEDIF("3/1/93","8/4/98","MD")=3
      関連項目
            DATE 指定された日付に対応するシリアル値を返します。
            DATEVALUE 日付を表す文字列をシリアル値に変換します。
            WEEKDAY シリアル値を曜日に変換します。
    なお、DATEDIF 関数は、データ互換のために用意された関数であるため、関数ウ
    ィザードを使用して入力することができません。そのため、直接入力していただく
    ようお願いいたします。
  DAYS360
   ̄ ̄ ̄ ̄
    1年を 360 日 (30 日× 12 ヶ月) と仮定して、2 つの日付の間の日数を
    返します。引数 [方式] が追加され、日数の計算方法をヨーロッパ方式と米国
    NASD (National Association of Securities Dealers) 方式の中から選択できる
    ようになりました。
    詳細は、ヘルプ ファイルの「ワークシート関数一覧」を参照して下さい。
  WEEKDAY
   ̄ ̄ ̄ ̄
    シリアル値を曜日に変換します。引数 [曜日] が追加され、戻り値の種類が選択
    できるようになりました。詳細は、ヘルプ ファイルの「ワークシート関数一覧」を
    参照して下さい。
  WEEKNUM
   ̄ ̄ ̄ ̄
    シリアル値に対応する日がその年の何週目にあたるかを、数値で返します。追加
    された書式は「 24 時間、60 分、60 秒以上の時間の表示書式」と「曜日の表示
    書式」です。詳細は、ヘルプ ファイルの「ワークシート関数一覧」を参照して下
    さい。
  24 時間、60 分、60 秒以上の時間の表示書式
   ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
    24 時間を越える時間は整数に繰り上げされるため、時間として扱うことができま
    せんでした。
    例えば「 23 時間 00 分」と「 10 時間 00 分」を加算すると「 33 時間 00 分」
    となりますが、これは「 1 日と 9 時間 00 分」ということになり、時間を表示す
    るための表示形式では日付は表示できなかったため「 9 時間 00 分」だけが表示
    されます。
    これを日付を含めて表示させると「 1990年1 月 1 日 9 時間 00 分」となり、本来
    の意味を失ってしまいます。Excel 5.0 からは、時間を表す「 h 」という表示形式
    を 「 [] 」で囲むと整数部分の繰り上げがされずに「 33 時間 00 分」と表示する
    ことができます。同様に「 m 」や「 s 」に「 [] 」を付けることで 60 分や 60 秒
    以上の表示が可能になりました。
  曜日の書式
   ̄ ̄ ̄ ̄ ̄
    曜日を表すには「 aaa 」と「 aaaa 」の 2 つの形式があります。前者は「月、火、
    水 …」というような略式のものであり、後者は「月曜日、火曜日、水曜日…」とい
    うように完全な形で表示するものです。

誕生日から今日まで何年何ヶ月何日経過したかを算出する方法

質問

「誕生日から今日までの年数と月数と日数」を算出したいと考えています。簡単
な方法はあるでしょうか。

回答

Excel 5.0 より追加された DATEDIF 関数を使用することで求めることができます。
            =DATEDIF(開始年月日,終了年月日,"Y")        経過した年数
            =DATEDIF(開始年月日,終了年月日,"YM") 経過した 1年未満の月数
            =DATEDIF(開始年月日,終了年月日,"MD") 経過した 1 月未満の日数

8 桁の数値データを日付を表わすシリアル値に変換する方法

質問

年数 4 桁、月数 2 桁、日数 2 桁という 8 桁の数値があります (例、 19940801)。こ れを日付を表わすシリアル値に変換する方法はあるでしょうか。

回答

1 桁台の月数や日数 (1 ~ 9 月/日) の場合には、「 01 」というように数字の前に ゼロが入って必ず 8 桁になっていることが前提となりますが、次の数式で変換
できます。
8 桁の数値をシリアル値にするためには、年数と月数と日数に分ける必要がありま
す。
            年数を算出方法 8 桁の数値を 10000 で割った商の値
            月数の算出方法 8 桁の数値を 100 で割った商の整数部分を 100 で割った
                                余りの値
            日数の算出方法 8 桁の数値を 100 で割った余りの値
              =DATE(INT(8 桁の数値/10000),MOD(INT(8 桁の数値/100),100),
               MOD(8 桁の数値,100))
6 桁の数値の場合 (例、 940801) も同じ数式でシリアル値を算出することができ
ます。

一定の時間を算出する方法

質問

退社時間から出社時間を引き算して勤務時間を求めたいのですが、昼休みの時間
や休憩の時間を除く実勤務時間を算出したいと考えています。いい方法はあるでし
ょうか。

回答

日数や時間を計算するためのシリアル値では、整数の「 1 」が「 24 時間」を表現し ています。そのため特定の時間を算出するためには、以下のような計算をします。
                  (1/24)=1 時間
                  (1/1440)=1 分
                  =(退社時間-出社時間-(1/24))
上記のような式で退社時間から出社時間を引き算した時間から 1 時間を引くことが
できます。同様にして分単位での時間の算出も可能です。また、時間も分も数値に
よっては通分することが可能であることはいうまでもありません。
                  (1/12)=2 時間
                  (1/72)=20 分
                  =(退社時間-出社時間-(1/24)-(1/72))
上記のような式で退社時間から出社時間を引き算した時間から 1 時間と 20 分を引い た時間を算出することが可能です。

日数および時間計算のサンプル

1994 年 2 月が何日あるかを計算する方法

=DATE(1994,3,1)-DATE(1994,2,1)
該当する月の翌月の 1 日から該当する月の 1 日を引き算するという方法で求めるこ とができます。アドインの関数で EOMONTH 関数というものもあります。これを
使って、以下のような数式でも求めることができます。
     =DAY(EOMONTH(DATE(94,2,1),0))
EOMONTH 関数を使用するには、分析ツール アドイン マクロをセットアップする
必要があります。詳しくは、「ユーザーズ ガイド」 701 ページ「 37 章 アドイン機 能の組み込み」またはヘルプ ファイルの「アドインを登録、削除するには」を参照
してください。

今年になってから何日経過したかを計算する方法

    =TODAY()-DATE(YEAR(TODAY()),1,1)
今日の日付から今年の 1 月 1 日の値を引きます。この計算方法のでは、今日が 1 月 1 日の場合には、経過日数が 0 日であり、1 月 2 日になってから 1 日経過したと
いうことになります。この計算方法は「片端 (かたはし) 落ち」といい、起算日
または満期日のどちらかを数えないというものであり、日付・日数計算では
一般的なものです。

今月になってから何日経過したかを計算する方法

     =TODAY()-DATE(YEAR(TODAY()),MONTH(TODAY()),1)
今日の日付から今月 1 日の値を引きます。この計算方法の場合は、今日がその月の
1 日の場合は、経過日数が 0 日であり、2 日になってから 1 日経過したということ になります。この計算方法は「片端 (かたはし) 落ち」といい、起算日または
満期日のどちらかを数えないというものであり、日付・日数計算では一般的な
ものです。

来年まであと何日かを計算する方法

      =DATE(YEAR(TODAY())+1,1,1)-TODAY()
来年の 1 月 1 日から今日の値を引きます。

Keywords: KB401700
Technology: kbExcel500 kbExcelSearch kbExcelWinSearch

inserted by FC2 system