• ベストアンサー

条件に一致しない時間の場合に警告メッセージを出すようにするにはどうすればよいでしょうか

前回、QNo.3023122 日にちごとの作業時間の合計を出すにはどうすればよいのでしょうか (http://oshiete1.goo.ne.jp/qa3023122.html) という質問をさせていただいた者です。 今回教えていただきたいのは、条件に一致しない時間の場合に警告メッセージを出すようにするにはどうすればよいかということです。 具体的には算出した一日あたりの作業合計時間が8時間以外であれば警告メッセージを出したいということです。 サンプルデータとしては A列  B列 C列  D列           E列          F列                                    G列 年  月  日  作業内容        作業時間       作業時間合計チェック                      作業時間合計/日 2007  5   1  営業           4:00                                                8:00 2007  5   1  提携先との打合せ  2:30                                                 8:00 2007  5   1  会議           1:30                                                8:00 2007  5   9  社内での作業      1:00                                               8:00 2007  5   9  提携先との打合せ  0:30                                                8:00 2007  5   9  営業           6:30                                                8:00 2007  5   10  会議           1:00         作業時間の合計が正しくない可能性があります。         4:00 2007  5   10  営業           1:00         作業時間の合計が正しくない可能性があります。         4:00 2007  5   10  提携先との打合せ    1:00         作業時間の合計が正しくない可能性があります。      4:00 2007  5   10  会議           1:00         作業時間の合計が正しくない可能性があります。      4:00 というもので、F列にどのような記述をすればよいかが分からないでおります。 私が試したのは、F3のセルに  =if(or(g3<8,0<=g3<8),"作業時間の合計が正しくない可能性があります。","") という記述をしたのですが、うまく出来ませんでした。 どこがいけないのかまったく分かりません。 お分かりになられる方がおられましたら、教えてください。

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

  • ベストアンサー
  • suekun
  • ベストアンサー率25% (369/1454)
回答No.2

数式を詳しく見ていませんが、?と思える箇所は 「0<=g3<8)」ですね。 G3<8が0以上であれば・・・と言う論理式。 ところがG3が8未満がその条件になってます。  これは分けるべきでしょう。 G3が8未満である事が最初の条件、 これをクリアーしていれば、今度は0以上なのか?と言う分岐をかける。 そのまま書き換えると =IF(OR(G3<8,AND(0<=G3,G3<8)),"作業時間の合計が正しくない可能性があります。","") となるかな? でも、結局はG列が8:00でなければNGなんですよね。 =IF(G3<>8,"作業時間の合計が正しくない可能性があります。","") となるかな?^^; 但し、8:00が8として認識されている前提です。

mayr2007
質問者

お礼

ご回答いただきありがとうございます。 >但し、8:00が8として認識されている前提です。 この箇所を読んで、はっとしました。 いろいろ考えた結果、 F3セルに、 =if(and(hour(D3)=8,minute(D3)),"","作業時間の合計が正しくない可能性があります。") と入力するとうまくいきました。

その他の回答 (2)

  • vista2446
  • ベストアンサー率46% (131/279)
回答No.3

初めて触る関数で、まだよく理解できてませんが。。。 =IF(SUMPRODUCT((A$2:A$11=A2)*(B$2:B$11=B2)*(C$2:C$11=C2)*(E$2:E$11))<TIME(8,0,0),"作業時間の合計が正しくありません "&HOUR(SUMPRODUCT((A$2:A$11=A2)*(B$2:B$11=B2)*(C$2:C$11=C2)*(E$2:E$11)))&":"&MINUTE(SUMPRODUCT((A$2:A$11=A2)*(B$2:B$11=B2)*(C$2:C$11=C2)*(E$2:E$11))),"") いかがでしょう。 zap35さんのおかげで、Excelの幅が広がりそう。。。感謝感謝♪ご質問者様に感謝感謝♪♪

mayr2007
質問者

お礼

ご回答いただきありがとうございます。 ご提示いただいた数式の中に HOUR と MINUTE という関数があったので、自分なりに使い方を考えて、 F3セルに、 =if(and(hour(D3)=8,minute(D3)),"","作業時間の合計が正しくない可能性があります。") と入力するとうまくいきました。 時間の8:00をどうすれば数字の8と認識してくれるのかすぐには分からずに困っていたので、救われました。

回答No.1

=IF(G3=8,"","作業時間の合計が正しくない可能性があります。") ではダメですか? G3が8(真)の場合は空白、それ以外(偽)は指定のメッセージを表示 です。

mayr2007
質問者

お礼

ご回答いただきありがとうございます。 ご回答いただいた内容を試したのですが、最初はうまくいきませんでした。しかし、NO.2様のご指摘により、8:00を数字の8と認識させていないことが原因であると判明しましたので、NO.3様の回答の中にあるHOUR関数やMINUTE関数を使用することにより解決しました。

関連するQ&A