こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

エクセル 時刻計算の方法

 ある書籍でエクセルの勉強をしているのですが、それに記載されている時刻計算の方法がよくわかりません。
 その書籍では実働時間を算出する際
   I13(18:30)-G13(9:00)-"1:00"としてあります。
 このやり方で正しい答えは算出されるのですが、
 なぜシリアル値が入力されているセル(I13とG13)と文字列に変換した1:00とで計算できるのでしょうか。
 シリアル値と文字列は同じベクトルでは、計算できないので、1:00という数値は、TIME関数を用い
TIME(1,0,0)としなければならないのではないのでしょうか。
 考え方について、ご存じの方がいらしたらご教示ください。
よろしくお願いいたします。
 

投稿日時 - 2014-12-15 12:44:57

QNo.8859059

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(4)

》 文字列に変換した1:00とで計算できるのでしょうか。
クドイ説明は省いて、Excel においては
文字列の数字は、加減乗除(+、-、*、/)される際は、数値として計算される
と覚えておきませう。

投稿日時 - 2014-12-15 18:31:40

ANo.3

>シリアル値と文字列は同じベクトルでは、計算できないので、1:00という数値は、TIME関数を用いTIME(1,0,0)としなければならないのではないのでしょうか。
論理的にはその通りです。
しかし、Excelの中では次の方法も文字列を数値化できることになっています。
=VALUE("1:00") → 0.04666・・・・ (循環小数)
="1:00"*1 → 0.04666・・・・ (循環小数)
="1:00"+0 → 0.04666・・・・ (循環小数)
時刻を表す文字列は直接四則演算で数値に置き換えることを暗黙の了解事項として解釈しますのでエラーになりません。
つまり、"1:00"*1はVALUE("1:00")*1と同等に演算する約束ができているのです。

投稿日時 - 2014-12-15 14:58:58

ANo.2

Excelでは「計算できる数字の文字列に演算を加えると数値化する」という
仕様があります。

="2014/1/1"/1

のようにすれば「41640」というシリアル値が返ります。
ただ実際問題「"1:00"」は「1日の 24分の1」なので

=I13-G13-1/24

としても同じです。いずれにしろ 演算誤差が発生しているので注意する必
要があると思います。

> TIME(1,0,0)としなければならない
そうしたらダメだとは思いませんが TIME関数は 24時間を超える値を扱え
ないこともありますし 却って不便ではないでしょうか。

投稿日時 - 2014-12-15 13:15:09

ANo.1

単純に言うと
文字列 "1:00" をExcelが時刻としてシリアル値に自動変換しているから

もちろんTIME(1,0,0)としても同じ計算結果が得られます

投稿日時 - 2014-12-15 13:08:11

補足

早速 ご回答いただきましてありがとうございます。
ちなみにどのような時にシリアル値に自動変換されるのでしょうか。
なにか規則のようなものがあれば、教えていただけたら幸いです。

投稿日時 - 2014-12-15 13:25:06

あなたにオススメの質問