関数IFでの時間の判定

勤務時間の計算を行うものを作成しているのですが。
A1 B1 C1 D1 E1 F1
9:00 13:00 15:00 20:00 8.0 1.0
と、入力した際、E1 に
IF(A1>=TIMEVALUE("19:00"),"TRUE","FALSE")
とした場合場合、
A1に19:00以上の時間を入れるとTRUE
A1に19:00未満の時間を入れてもTRUE
になります。
判定しきの不等号を逆にすると
IF(A1<=TIMEVALUE("19:00"),"TRUE","FALSE")
A1に19:00以上の時間を入れるとFALSE
A1に19:00未満の時間を入れてもFALSE
になり時間の判定が正しく行えていないようです。
勤務時間の計算で、残業があるかないか(終了時間が19時以降か、19時未満か)で、
- TRUEには、タイムカードの時間までを計算(残業なし)
- FALSEには、19:00までの勤務時間を計算(残業あり)
※残業時間の計算は別セルで行っています。
という風に行いたいのですが、なにかいい方法はないでしょうか?

投稿日 2008/07/24 19:58

返信: 4

2008/07/24 20:57 Community User への返信

お書きになった文章からは「勤務時間の計算をやろうとしているのだな」という事だけはわかるのですが、それ以外は何をやっているのか、さっぱりわかりません。
> A1 B1 C1 D1 E1 F1
> 9:00 13:00 15:00 20:00 8.0 1.0
> と、入力した際、E1 に
> IF(A1>=TIMEVALUE("19:00"),"TRUE","FALSE")
> とした場合
ここがまず分かりません。A1〜F1にその下の行のデータを入力しているのですよね? でもE1に数式を入れる? E1は上によると8.0というデータを入力しているのではないのですか? どっち?
というか、だいたい、A1〜F1それぞれの項目名というか、何が入るセルなのですか?よく分かりませんが、それらは無視して判定式の事だけにreplyすると。。。
例えば全然別のセルG1に判定式を入れると仮定してその判定式は
=IF(TIMEVALUE(A1)<=TIMEVALUE("19:00"),"TRUE","FALSE")
が正解ですね。TIMEVALUE("19:00")から得られる値は「0.7083333333」ですからどだいA1の「19:00」と比較できるわけがありません。比較するには比較対象も同じ土台にのせなくちゃ。ので、TIMEVALUE(A1)として「0.375」の値を得てからやる必要があるって事です。関数HELPちゃんと読みましょう。

2008/07/24 21:22 Community User への返信

言葉足らずで申し訳ありませんでした。
E1, F1の数字は判定式の結果として得たい数字を書いてしまいました。
TIMEVALUEで得られる値を理解していませんでした。教えて頂いたことを元に作成し直してみたいと思います。
ありがとうございました。

2008/07/24 23:43 Community User への返信

> TIMEVALUE("19:00")から得られる値は「0.7083333333」ですからどだいA1の「19:00」と比較できるわけがありません。
う〜ん、そうかな?Numbersは持ってないので、あくまでExcelでの話になりますが、セルに時刻を入力した場合、それは数値に換算すれば24時に対しての割合、すなわちTIMEVAL()と等価で、数値同士として比較が可能なはずです。同様に日付を入れれば、それは数値換算では特定の日付からの経過日数を表しますよね。基本的に時刻や日付は、表計算では数値と等価であり、表示方法が違うだけと考えるはずなんですが。
ちなみに、Excelでは、「=IF(A1>=TIMEVALUE("19:00"),"TRUE","FALSE")」で正しく結果が出ます。
NumbersはExcelとは違うのかもしれませんが、A列に入っているのが、文字列ではなく時刻であることは間違いないのかな?セルの書式を「数値」にできますか?

2008/07/25 00:37 Community User への返信

> NumbersはExcelとは違うのかもしれませんが
です。
# あ、ExcelではOKですけれど、Numbersではこれは駄目です。と書けばよかったのかな。でも、そんなのはいっぱいあるし、いちいち比較書いていたら、きりがないし。。。ので、前もってExcelでは出来るけれどNumbersでは駄目だ・・・のような文章が入っている方にのみ比較検証して書くようにしています、一応。
> 文字列ではなく時刻であることは間違いないのかな?セルの書式を「数値」にできますか?
自動で時刻書式になります。明示的に「日付と時刻」書式に切り替えても結果は同じです。「数字」書式はありますが「数値」書式はありません。関数の扱いが違ったり、セルの扱いが(内部的にも)違ったりと想像以上の違いがあります。
> セルに時刻を入力した場合、それは数値に換算すれば24時に対しての割合、すなわちTIMEVAL()と等価で、数値同士として比較が可能なはずです。
とはなっていないようです。
# 昔から表計算(LOTUS123、Excel等)を使っていた方は相当違和感があると思います。人によっては「こんなの表計算ぢゃねぇ!」と言う方もいると思います。私もちょっと思いました。が、最近では、表計算が初めての人にはこっちの考え方の方が確かに簡単かなと思うようになりました。いろいろと面食らう事が多いですが、工夫してなんとかなってますし(それもまたおもしろかったり)。

このスレッドはシステム、またはAppleコミュニティチームによってロックされました。 問題解決の参考になる情報であれば、どの投稿にでも投票いただけます。またコミュニティで他の回答を検索することもできます。

関数IFでの時間の判定

Apple サポートコミュニティへようこそ
Apple ユーザ同士でお使いの製品について助け合うフォーラムです。Apple Account を使ってご参加ください。