- ベストアンサー
Excel この関数のどこが間違っているのか
Excelの関数で、 0<E33<19のときB33-E33の値を、 E33がそれ以外のときはB33+24-E33の値を返したいので、 関数を =IF (0<E33<19,B33-E33,B33+24-E33) としたのですがエラーになりました。 どこが間違っているのでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>どこが間違っているのでしょうか? =IF(0<E33<19,B33-E33,B33+24-E33) ↓ =IF(AND(0<E33,E33<19),B33-E33,B33+24-E33) または =IF((0<E33)*(E33<19),B33-E33,B33+24-E33) ExcelのIF関数では2つの条件を1つの不等式で判定すると正しい結果が得られません。 提示の数式でエラーは起りませんが条件分岐の処理が不適正になります。
その他の回答 (1)
- aokii
- ベストアンサー率23% (5210/22062)
=IF (0<E33<19,B33-E33,B33+24-E33) ではなく、IFの後ろのブランクを削除して、 =IF(0<E33<19,B33-E33,B33+24-E33)
お礼
補足コメントに誤植がございました 申し訳ありません、訂正します 誤) >>Eが睡眠時間、Bが起床時間なので、 正) >>Eが就寝時間、Bが起床時間なので、 Eの就寝時間は24時間表記で、午後10時の場合の値は22、午前1時は1とします。
補足
ご指摘の通り、ブランクを削除したらエラーは解消されました。 本当に有難うございました。 しかし、お次は値がおかしくなりました。 それと言いますのも、 上記関数においてE33の値が条件を満たすにも関わらず(E33=1,B33=6)、 満たさなかった場合のB33+24-E33が適用され、値が29になりました。何故でしょうか? これは、睡眠時間を求めるための関数で、 Eが睡眠時間、Bが起床時間なので、 たとえばBの値が午前1以降のときはB=1として、起床時間-就寝時間つまり、B33-E33 Bが21時など24時前のときは起床時間+(24-就寝時間)つまりB33+24-E33としようとしています それなのに、なぜE33=1のときに条件を満たさなかったことになるのでしょうか。
お礼
>>ExcelのIF関数では2つの条件を1つの不等式で判定すると正しい結果が得られません。 そうだったのですか。 0<E33<19の部分を、E33<19としましたら正しい結果になりました。 0<E33<19は、コンピュータ上では 0<E33というE33<19という2つの条件式と見なされるわけですね。 大変勉強になりました。 この度の御回答、誠にありがとうございました。 貴重な御時間を割いていただき感謝いたします。