- ベストアンサー
エクセル 時間管理について
・『エクセルの時間管理でA1セルの値が8時間を超えていたらB1セルの値から8時間をひく、それ以外なら0:00と表示』ということを行いたいのですが、下記のような式ではA1セルにどのような値が入っても「0:00」になってしまいます。 解決法をご教授願います。 <式> =IF(A1>"8:00",A1-"8:00","0:00") <結果> 0:00
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
=MAX(0, A1-"8:0") などのようにしてみてください。 セルの書式設定はもちろん時刻の表示形式にしておきます。 #しばしば皆さんが間違えます。 =IF(A1>"8:00" この書き方では,「8時間」との大小比較を計算できません。これでは「8時間」ではなく「8:00という4文字の文字列」との計算になっているからです。 一つのやり方としては,丁寧に =IF(A1>TIME(8,0,0) あるいはTIMEVALUE関数などを使ってちゃんと「8時間」の値と比較させると出来ます。 別のやり方としては, =IF(A1-"8:0">0, という計算式にしてもこれは計算できます。
その他の回答 (4)
- kagakusuki
- ベストアンサー率51% (2610/5101)
Excelでは、年月や時刻は全て日数単位で計算されて、表示を行う際に、年月や時間、分、秒に変換されます。 例えば、「18:00」は1日の内の4分の3が経過した時刻ですから、表示こそ「18:00」ですが、実際に計算で扱われるデータは、数値の「0.75」なのです。 ですから、8時間を引かれる場合には、"8:00"を引くのではなく、1日の8/24である0.333333・・・・を引く必要があります。 従って、数式を以下の様されると良いと思います。 =A1-IF(A1>1/3,1/3,0) 又は、 =A1-(A1>1/3)/3 2番目の数式中の (A1>1/3) の部分は、論理式と言う判定を行うための数式で、A1>1/3が成り立っている場合には、数値の1として扱われ、成り立っていない場合には、数値の0として扱われます。 つまり、A1が8:00を超える場合には、1日の1/3(=8時間)が引かれる様になっております。 それから、上記の数式の計算結果を表示させる際には、この数式が入力されているセルの書式設定を、時刻表示を行う様に設定して下さい。 その方法は、 数式が入力されているセルを、選択 ↓ メニューの[書式]をクリック ↓ 選択肢の中の[セル]をクリック ↓ 現れる「セルの書式設定」ウィンドウの[表示形式]タブをクリック ↓ 分類の欄の中にある[時刻]をクリック ↓ 種類の欄の中にある[13:30]をクリック ↓ [OK]ボタンをクリック すると、小数表示が時刻表示に変換されます。 尚、このままの数式では、A1セルに時間が入力されていない場合には、0が表示されますが、A1セルが未入力の場合や、数値以外のデータ(文字やエラー)が入力されている場合には、何も表示させない様にするためには、次の様な数式にされると良いと思います。 =IF(ISNUMBER(A1),A1-(A1>1/3)/3,"")
お礼
お世話になります。 まさか分数が必要だったとは・・・^^; 貴重なご意見ありがとうございました。
TIMEVALUE関数を利用し、関数式を下記のようにしてください。 =IF(A1>TIMEVALUE("8:00"),B1-TIMEVALUE("8:00"),"")
お礼
お世話になります。 知らない関数名が・・・(・ω・;) まだまだ勉強不足であることを実感しました。 どうもありがとうございました。
- tom04
- ベストアンサー率49% (2537/5117)
こんにちは! 色々方法はあるかと思いますが・・・ 一例です。 表示したいセルの表示形式をユーザー定義から [h]:mm としておきます。 そのセルの数式を =IF(A1>"8:00"*1,A1-"8:00","0:00"*1) としてみてはどうでしょうか? 単純に "8:00" だけだと文字列扱いになると思います。 *1 とすることで数値扱いになるはずです。 以上、参考になれば良いのですが 他に良い方法があれば読み流してくださいね。m(__)m
お礼
お世話になります。 「*1」での数値化ですか・・・ まだまだ知らないことが多すぎるみたいですm(_ _)m どうもありがとうございました。
- KURUMITO
- ベストアンサー率42% (1835/4283)
ご質問の内容と式は違っているように思いますが、お示しの式は次のようにすればよいでしょう。 =IF(A1>"8:00"*1,A1-"8:00",0) なお、式の入力されたセルの表示形式はユーザー定義で[h]:mm とでもしておくことですね。 これによって0のときは0:00と表示されます。 お示しの式でしたら0:00と表示されますが、文字列の扱いとなりますので、そのセルのデータを他の計算などに使う場合にはエラーの原因になりやすくなります。
お礼
お世話になります。 確かにエラーが多くて嫌になっていたところですww 文字列なら確かに他の計算に数値としては参照できないですよね^^; 勉強になりました。 ありがとうございました。
お礼
お世話になります。 なるほど・・・と言いたいところなんですが正直よく理解できませんでした(;_;) 言われるがままに式を代入したらできたので「まぁいいか♪」てな感じですがww もう少し勉強して出直してきます。 丁寧な説明文も含んでいただき、ありがとうございました。