« Excelは見えないところでギザ休む | トップページ | セルの書式設定で日本語の曜日を表示させる »

2010年2月14日 (日)

日時と時間

x月x日xx時xx分から
o月o日oo時oo分までの時間の「量」を計算したい時について

下の画像のように
セルA3を
=A1-A2
という数式にして間の時間を出そうとすると
こんな風になります。
Pic20100214a

「4時間」という時間を出したいのに
0日なんてよくわからない日時になってしまっています。

上の画像ではA列の表示形式は「日時」です。
B列にA列の値を表示形式「標準」にしたものを入れるとこうなります。
Pic20100214b

確かにB2-B3 = B4になっています。

既定では、Windows 版 Excel では、
1900 年日付システムを使っていて

1900/1/1

は表示形式「標準」では、1になります。

1900/1/2は、2
1900/1/3は、3
1900/1/4は、4

以上のように
1日という時間の「量」は1です。
よって

1日 = 1
24時間 = 1
1時間 = 1/24
60分 = 1/24
1分 = 1/24/60
1秒 = 1/24/60/60

で表されます。
二番目の画像のセルB4の単位は「日」で
0.166666667日ということになります。
0.166666667日は

0.166666667 * 24 時間
0.166666667 * 24 * 60 分間
0.166666667 * 24 * 60 * 60 秒間

なので
x月x日xx時xx分から
o月o日oo時oo分までの時間の「量」を計算したい時は
時間単位で表したいなら
2つの日時の差に「* 24」をします。
分単位だった「* 24 * 60」、
秒単位だったら「* 24 * 60 * 60」をします。

下の画像は
C列にそれぞれの単位に計算したものを追加。
Pic20100214c

続いて、
切りがよくない数字のとき
例えば次のような場合
Pic20100214d

切りがよい数字は
「分」だけ「秒」だけで表しても分かりやすいです。
しかし、上のような数字の場合
切捨てや四捨五入をしないなら、
x日xx時間xx分xx秒のように表した方が
分かりやすいです。

例えば
セルA2からセルA3までの期間を出したいときは
次の数式を使います。(A2>A3)

=DATEDIF(A3,A2,"D") & "日" & HOUR(A2-A3) & "時間" & MINUTE(A2-A3) & "分" & SECOND(A2-A3) & "秒"

次の画像のセルC4にこの数式が入力してあります。
Pic20100214e

DATEDIF(開始日,終了日,単位)は、
開始日から終了日までの時間を返します。
日単位なら、単位のところは"D"。

なぜ、日数だけDAY関数ではないかというと
DAY関数は1 ~ 31までしか返さないからです。

例えば
(2010/3/3)から(2010/1/1)を引いたものを
DAY関数に入れると1になります。
この期間の日数は、31 + 27 + 3 = 61日です。

どうも、日付・時刻の関数を使っていると、
日時を表す「時間」と
時の長さを表す「時間」が
「時間」という同一の言葉を介して
頭の中でその区別が曖昧になるように感じます。
(私だけでしょうか…)

各ワークシート関数はExcelのヘルプのそれぞれの頁、
日付については「日付と時刻の処理について」の頁を参照。

|

« Excelは見えないところでギザ休む | トップページ | セルの書式設定で日本語の曜日を表示させる »

コメント

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: 日時と時間:

« Excelは見えないところでギザ休む | トップページ | セルの書式設定で日本語の曜日を表示させる »