• ベストアンサー

Excelで二つの関数をヒトツの関数に収めたい

=IF(AND(T$3>=$D9,T$3<$E9),1,"")という式と =IF(AND(T$3>=$F9,T$3<$G9),-1,"")という式をヒトツにまとめたいです。 ちなみにD9は出勤時間、E9は退勤時間、F9は休憩始めの時間、G9は休憩終わりの時間 そしてT3には時刻が入力されており、塗りつぶす事によってグラフになるようになっています。 現在は1つ目の式のみを使い、条件式書式にて「1と等しい時にセルを塗りつぶす」としています。 これに休憩時間の間はグラフを塗りつぶさないという条件をプラスしたいと思っています。 補足としては、他のセルにてCOUNT関数を使っており、その時間に何人が働いているか表示出来るようにしています。 二つ目の式の真の場合の-1に深い意味はありません。 結果、何人働いているか表示出来ればと思っての数字です。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • wisemac21
  • ベストアンサー率39% (171/429)
回答No.4

>やはり30分ずれてしまいます。 時間は小数点以下の数値を計算しているので、演算誤差のせいでは無いかと思います。 下記URLを参照してください。

参考URL:
http://pc.nikkeibp.co.jp/pc21/special/gosa/
narayuni
質問者

お礼

ありがとうございます! まさか誤差が生まれるなんて夢にも思いませんでした! T3のセルをT2で、=CEILING(T2,"0:30")と参照させて、 各セルの式のT$3の部分をT$2に置き換えるとうまくいきました。 本当に助かりました!

その他の回答 (3)

  • wisemac21
  • ベストアンサー率39% (171/429)
回答No.3

働いている時間のみ =IF(AND(T$3>=$D9,T$3<$E9,OR(T$3<=$F9,T$3>$G9)),1,"") これでいいのかな

narayuni
質問者

お礼

ご回答ありがとうございます。 OR関数を使う事でシンプルになり分かりやすかったです。 皆様エクセルを熟知されていてうらやましい限りです。 しかし、やはり30分ずれてしまいます。 そのまま入力すると開始時間も30分ずれてしまったので、不等号を逆にしてみました。 すると他の方の回答通りに入力したのと同じような状態になりました。 そのままエクセルのデータを見ていただければ早いのにともどかしい気持ちでいっぱいです。 解決法がありましたらぜひご教授ください。

  • CMLT
  • ベストアンサー率40% (143/357)
回答No.2

単純にヒトツにまとめて、 =IF(AND(T$3>=$F9,T$3<$G9),-1,IF(AND(T$3>=$D9,T$3<$E9),1,"")) でどうでしょう。 優先順位順に、休憩時間中は-1、それ以外で勤務時間中は1、他""

narayuni
質問者

お礼

ご解答ありがとうございます。 IF関数をカンマで区切れるというのを初めてしりました。 勉強になりました。ありがとうございます。 ですがやはりNO,1様と同じ状態になってしまいます。 同じ状態になるという事は数式以外の何かがおかしいと思うのですが どこがおかしいと推測出来るでしょうか。 質問文と違った質問になりますがご回答頂ければ幸いです。

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.1

次の方法は如何でしょうか。 =IF(AND(T$3>=$D10,T$3<$E10),IF(AND(T$3>=$F10,T$3<$G10),-1,1),"")

narayuni
質問者

お礼

素早いご回答ありがとうございます。 回答していただいた通りに入力してみました。 狙っている状態になりました。 ですが、30分刻みで作っているのですが休憩終了の時間を 17時、18時以外の時間に設定すると何故か30分前の所が塗りつぶされてしまいます。 不等号を色々いじってみましたが改善されず…。 何故でしょうか…。

関連するQ&A