- 締切済み
Excelの時間計算(年・月・日 別々のセルで…)
Excelの時間計算で悩んでいます。 2つの異なる日付(年、月、日別々のセルに入力したもの)の 日数の差を関数で表示させたいのですがうまく行きません。 例えば、 A列にスタート年、B列にスタート月、C列にスタート日、D列にエンド年、E列にエンド月、F列にエンド日を入力し G列にエンド年月日-スタート年月日の日数させたいと考えています。 +----A----B----C----D----E----F----G 1 2008 2 1 2008 2 28 24 G1にDATE(D1,E1,F1)-DATE(A1,B1,C1)の数値を表示させたいのです。 ひとつのセルに日付形式で年月日を持たせれば DATEIF関数で実現可能なのは判りましたが 運用上、年月日を別のセルにして管理したいと考えています。 どなたかお解りになる方、いらっしゃいませんでしょうか。
- みんなの回答 (5)
- 専門家の回答
みんなの回答
DATEDIF関数の場合、パラメータの順序が決まっていますので、これを間違えるとエラーになります。 DATEDIF(スタート日,終了日,カウントする種別) です。 ここで、「スタート日<=終了日」という制約があります。 「スタート日>終了日」だとマイナスで計算結果がでてくれたら良いので卯が、エラーになってしまいます。 これは、マイクロソフトがシリアル値のスタートを1900/1/1と決めてしまった事によるものだそうです。 MAC用のように1904/1/1なら,このエラーは起きません。 このため、DATEDIF関数は関数のリストやヘルプにも載らない、「他のソフトとの互換性のため」と言う名目で存在する、可哀相な関数になってしまいました。 そのくせマイクロソフトの主催する「使い方セミナー」では日数の算出方法として紹介しています。 Windows用でもオプションでシリアル値のスタートを1904/1/1に出来るので、 1904年に設定すればエラーは起きなくなりますが、大多数のユーザーこのことを知らず、 かつマイクロソフトがディフォルトを1900/1/1にしているため、自分だけ1904/1/1にしていると 他のPCでは日付が4年分ずれてしまいます。
私の環境はEXCEL2002ですが、ちゃんと27と表示されます。 もし、27でなく28と計算させたいなら、これはエクセルの問題でなく、算数の問題です。 =DATE(D1,E1,F1)-DATE(A1,B1,C1)+1 とすべきです。
- mshr1962
- ベストアンサー率39% (7417/18945)
日数だけなら G1=DATE(D1,E1,F1)-DATE(A1,B1,C1) か G1=DATEDIF(DATE(A1,B1,C1),DATE(D1,E1,F1),"D") なのでこの場合、上の方が簡単です。 それとも、G1=年数,H1=月数(年に満たない),I1=日数(月に満たない)にするのですか? G1=DATEDIF(DATE(A1,B1,C1),DATE(D1,E1,F1),"Y") H1=DATEDIF(DATE(A1,B1,C1),DATE(D1,E1,F1),"YM") I1=DATEDIF(DATE(A1,B1,C1),DATE(D1,E1,F1),"MD")
DATEIF関数というのは、DATEDIF関数の間違いですよね? それを踏まえた上で、以下のようにすればできると思います。 =DATEDIF(DATE(A1,A2,A3), DATE(D1,E1,F1), "D") 今回、初めて DATEDIF関数を知りました。関数のリストにも 出てこないんですね。勉強になりました。ありがとうございます。
- ryuujiok2205
- ベストアンサー率21% (233/1098)
意味がわからないのですが。 お書きのとおり、G1に「=DATE(D1,E1,F1)-DATE(A1,B1,C1)」と記述すれば、「2008/2/28 - 2008/2/1」、普通に考えて「27」、ちゃんと計算してきますけど。 「24」って?
お礼
あっ、できてました。 すみません。
補足
24は入力間違いです。 27です。