牛、豚、鶏、どれか一つ食べられなくなるとしたら?

お世話になります。

通常の勤務地または自宅とは違う場所で、
8時間以上拘束されると出張とみなされる国で勤務しています。
実際の出張期間を記録し、かつ手当額(半日レートと全日レート)を算出する目的で表を作っています。

考え方は以下です。

8時間以上24時間未満では半日レート(例 出張開始日や帰着日)が、
24時間以上だと全日レート(例 2泊3日の中日)が支給される。

B10に、その日の拘束時間を入力すると、
F10に、その日の日当が、以下のように返されるようにしたいです。

B10が8未満だと 0(手当が出ないという意味)
B10が8以上24未満だと E10(半日レート)
B10が24だと D10(全日レート)

そこで以下のように入れ、

=IF(B10<8,0,IF(B10>=8,E10,IF(B10=24,D10)))

試しに、B10に7を入れると0が返され、
8や10を入れるとE10が返されていますが、
24と入れるとE10が返されてしまいます。

何がいけないのでしょうか?
ご教示いただけますよう、お願いいたします。

「IF関数複数条件:時間数から異なった出張」の質問画像

A 回答 (3件)

あなたが書かれたIF文で書くと以下の関数でどうでしょうか。



=IF(B10<8,0,IF(B10<24,E10,D10))
    • good
    • 0
この回答へのお礼

こちらの計算式で出来ています!

ほかの方の計算式でも問題なく出来ることがわかったのですが
最も字面がシンプルな(数学的な頭でないので、、すみません)為、
こちらの回答をベストアンサーとさせていただきます。

皆さんありがとうございました!

お礼日時:2016/11/18 17:22

=IF(B10<8,0,IF(B10>=8,E10,IF(B10=24,D10)))


だと、IF(B10>=8  でB10が24でも TRUEを返すから E10が返される

=IF(B10<8,0,IF(AND(B10>=8,B10<24),E10,IF(B10=24,D10)))
で処理可能
    • good
    • 0
この回答へのお礼

ありがとうございます!
こちらで出来ています。
式の構造についてご説明頂いて、理解が深まりました。

お礼日時:2016/11/18 17:28

IF文よりも、理解が簡単ら論理式が良いと思います。


=計算式1*条件1+計算式2*条件2+…

例えば、
B10が8未満だと 0(手当が出ないという意味)
B10が8以上24未満だと E10(半日レート)
B10が24だと D10(全日レート)
の場合は、
F10=E10*AND(8<=B10、B10<24)+D10*(B10=24)
ここでは、B10が8未満か24超の場合は、F10=0になります。
なお、閾値の8、24はセル参照にすると、この変更も楽になります。

ご参考まで。

####
現式では、「B10>=8」と「B10=24」が重複しています。
最後のIF文にはELSEがありません。
IF文は階層が深いと検証するのが面倒です…
    • good
    • 0
この回答へのお礼

なるほど。このように考えることもできるのですね。
こちらにて正しい値が返ってきています。
今後の参考に覚えておきたいと思います。

現式がなぜ機能しないのか、わかりました。
ありがとうございます!

お礼日時:2016/11/18 17:43

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!