• 締切済み

excel2003条件付き書式でのOR関数について

Excel2003を使用しています。 条件付書式で以下、3つの条件が設定されています。   (1)数式が▼ =OR(WEEKDAY(S$4)=1,WEEKDAY(S$4)=7,COUNTIF(休日,S$3))   (2)数式が▼ =S$3=TODAY()   (3)数式が▼ =S$171="遅延"   (1)の条件が満たされたとき、セル色を「ピンク」 (2)の条件が満たされたとき、セル色を「紫」 (3)の条件が満たされたとき、セル色を「赤」   上記の条件のうち、(1)の条件に【セル(S3)が空白の場合】という条件を追加したく   (1)数式が▼ =OR(WEEKDAY(S$4)=1,WEEKDAY(S$4)=7,S$3="",COUNTIF(休日,S$3))   【S$3=""】 を追記したのですが、なぜか書式が適用されません。  ※追記したところ、セル色が無色になりました※ 数式は間違っていないと思うのですが、書式が適用されないということは やはり数式が間違っているのでしょうか? それとも、そもそもこの条件を追加すること自体ができないのでしょうか?   1ヶ月の工程表を作成しており、表を毎月コピーして使用するため 31日が存在しない月は日付のセル(行番号:3)を空白にして使用します。   色々調べたのですが、このような記述のある質問が見当たらず 行き詰ってしまったので質問させていただきました。   お手数おかけしますが、何卒ご教示のほどよろしくお願いします。

みんなの回答

回答No.6

残念ですが、補足していただいた情報を加味してもなお、条件付き書式が動作しなかった原因は不明です。 そのようなIF関数の式をS4セルに入力しても、問題ありません。 おっしゃっている、S4をS3に書き換えた式も、オッケーです。 ちなみに、S4にそのように入力されているなら、質問文の条件式は、次のように書くのが普通です。 =OR(S$4=1,S$4=7,S$3="",COUNTIF(休日,S$3)) あるいは =OR(S$4={1,7},S$3="",COUNTIF(休日,S$3))  ←セルに入力する場合は有効、条件付き書式の条件としては使えない旨のエラーメッセージ この式と質問文の式は同じ結果を出しますが、それは、たまたまです(Microsoft社がそう仕組んだのかもしれませんが。)。WEEKDAY関数は、引数が日付のシリアル値であり、戻り値は曜日を表す1?7の整数です。 つまり例えば、カレンダー上のある日曜日がS3に入力されているとき、「WEEKDAY(S$3)」は、日曜日を表す「1」を返します。さらに、「WEEKDAY(1)」という式は、「1」というシリアル値が表す日である1900年1月1日(日)の曜日として、「1」を返します。したがって、「WEEKDAY(S$4)」は「WEEKDAY(1)」と同じであるため、やはり「1」を返すこととなります。「WEEKDAY(S$4)=1」と「S$4=1」が返す値(TRUEまたはFALSE)が一致するのはたまたまに過ぎないので、関数の意味を考えれば、「S$4=1」(S4の値は日曜日を表す整数)と書くのが普通と考えられます。

naozen
質問者

お礼

お礼が遅くなりまして、大変失礼いたしました。 また、ご丁寧な解説・検証にとても感謝致します。 なるほど、=OR(S$4=1,S$4=7,S$3="",COUNTIF(休日,S$3)) という式で書くことができるのですね! なんでもきちんと数式を書かないといけない気がして書いていましたが、関数の意味を考えずに作業している証拠ですね(^-^; お恥ずかしい(笑) しかし、今回の件はMarcoRossiItalyさんをもってしても原因は不明なのですね。 もしかしたら他になにか要因があるのやも知れませんが、今設定している条件書式で機嫌よく動いてるので 良しとすることにします!(笑) 幾たびにもわたって検証していただき、本当にありがとうございました★ また何か躓いたときには、ご教授賜りますよう何卒よろしくお願い申し上げます。

すると、全ての回答が全文表示されます。
回答No.5

No.2です。いいえ、原因は特定されていません。 名前さえ適切に設定されていれば、質問文の「=OR(WEEKDAY(S$4)=1,WEEKDAY(S$4)=7,S$3="",COUNTIF(休日,S$3))」という式そのものには、問題がありません。現に、私の手元のExcelでこの式をセルに入力すると、「TRUE」または「FALSE」を正常に返します。また、条件付き書式の条件式として用いれば、きちんと書式が発動します。 WEEKDAY関数は、第2引数を省略することができる関数です。したがって、WEEKDAY(S$4)という形にも、何の問題もありません。 ですから書式が適用されなかったのは、別の原因でしょう。入力された式がどこか正確でなかったとか、セルに入力されている日付の曜日が条件どおりでなかったとか。 なお「#VALUE!」というエラー値は、引数の型が違っているときに出ます。例えば、文字を数字のように扱って「="a"+1」などと計算しようとすると、このエラーが表示されます。

naozen
質問者

お礼

回答&検証ありがとうございます!   んー。そうなんですよねぇ。 #VALUE!値が出る原因を調べたら、仰るとおりの要因が考えられるとありました。 ですが、ここに記載した数式は実際に入力している数式をコピーして貼りつけましたので もし、この文章からコピーしてMarcoRossiItalyさんが検証されたのであれば 入力された数式は正確だと思うのです。     ひとつ引っかかることがあるとすれば、曜日が入る【S4】セルには以下の数式が入っています。   =IF(S$3="","",WEEKDAY(S$3,1))   もしかしてこれが原因でしょうか? というか、私にはこれぐらいしか原因と思われる箇所が見当たらないのですけどね(^-^; この数式が入っていることによって、日付の曜日が条件に合わないと判定されている・・・?   ゆえに以下の数式だと、【S3】セルを参照しているので条件書式が適用されるとか? =OR(WEEKDAY(S$3,1)=1,WEEKDAY(S$3,1)=7,S$3="",COUNTIF(休日,S$3))     ・・・憶測も甚だしいとこですが、これが原因だとすれば納得できるような気がします(ーωー;  

すると、全ての回答が全文表示されます。
  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.4

>1)数式が▼ =OR(WEEKDAY(S$4)=1,WEEKDAY(S$4)=7,S$3="",COUNTIF(休日,S$3)) 【S$3=""】 を追記したのですが、なぜか書式が適用されません。 S3セルとS4セルが混ざった数式になっていますが、異なるセルを参照している数式で良いのでしょうか? また「追記した」となっていますが、追記する前は書式が適用されたいたのでしょうか? >1ヶ月の工程表を作成しており、表を毎月コピーして使用するため 確認ですが、同じブックに「シート」のコピーをされているのですね。 条件付き書式の数式を確認したい場合は、提示されている数式をセルのコピー貼り付けして、「TRUE」が返るか調べてみてください。 この数式で期待した結果が返らない場合は、画面上部の数式バーで例えば「WEEKDAY(S$4)=1」や「S$3=""」の部分をドラッグして選択してF9キーを押してその部分の計算結果を確認してみてください(解除はEsc」キー)。

naozen
質問者

お礼

解決しました! お手数おかけしました。ありがとございました!   =OR(WEEKDAY(S$3,1)=1,WEEKDAY(S$3,1)=7,S$3="",COUNTIF(休日,S$3))   WEEKDAYの部分がだめだったようで、上記の数式にしたら出来ました♪   色々調べましたが、土日のセルに色をつける方法が =WEEKDAY(セル)=1 という数式になっていたのでそのまま引用しましたが それがいけなかったようです。   大変お騒がせいたしました(≧▽≦)

naozen
質問者

補足

行番号:3 日付(2012/6/28 の形式) 行番号:4 曜日(=IF(Q3="","",WEEKDAY(Q3,1) 数式が入っています)   NO.3さんの回答補足にも書いていますが、追記しない状態であれば条件書式が適用されます。   毎月コピーするのは、ファイル単位でコピーしているので、その月のシートは1枚です。 (データ量が多いので、ファイル単位で管理しています)   NO.2さんの回答補足に書きましたが、セルに直接数式をコピーして確認すると #VALUE! となります。   各数式を確認すると 「WEEKDAY(S$4)=1」 「WEEKDAY(S$4)=7」 で #VALUE!が返されます。 COUNTIF(休日,S$3) は、FALSE が返されています。

すると、全ての回答が全文表示されます。
  • prius770c
  • ベストアンサー率35% (91/258)
回答No.3

実は、半角や全角のスペースが入っているとか。 セルの文字色が白文字で実は日付(平日など)が入っているのに気が付いていないという 単純なものだったりしませんか? そうすると、土日でもなければ会社の休日でもないかつ空白でもないという 条件が成立します。 s3が31日に当たるなら削除する時に誤ってスペースを入れちゃってたと意外にありそうですから。 あとは、関数のチェックですね。 とりあえず、4つある条件を別のセルに1つずつ抜き出して結果を確認してください。 4つの条件のうちどれが該当するかわかっていると思うので、その結果が思っていた 結果と同様かどうかです。

naozen
質問者

お礼

解決しました! お手数おかけしました。ありがとございました!   =OR(WEEKDAY(S$3,1)=1,WEEKDAY(S$3,1)=7,S$3="",COUNTIF(休日,S$3))   WEEKDAYの部分がだめだったようで、上記の数式にしたら出来ました♪   色々調べましたが、土日のセルに色をつける方法が =WEEKDAY(セル)=1 という数式になっていたのでそのまま引用しましたが それがいけなかったようです。   大変お騒がせいたしました(≧▽≦)

naozen
質問者

補足

半角スペース、文字色が白色等のうっかりミスはありませんでした★ その辺はちゃんと確認してやってますので大丈夫なんですけどねぇ。。。。 NO.2さんの回答補足にも書きましたが、【S$3=""】を追記しない数式だと条件書式が適用されるのです。 別のセルで【S$3=""】だけの条件書式を設定すれば、それはそれできちんと適用されました。 なので、なぜ【S$3=""】を追記すると適用されなくなるのか、ほんとに全くわからないのです(/□≦、)

すると、全ての回答が全文表示されます。
回答No.2

試しに、問題の条件式をコピーして、条件付き書式の条件としてではなく、どこかのセルの中に入力してみてください。もし式が問題なく機能しているなら、「TRUE」または「FALSE」を返すはずです。恐らく、「#NAME?」というエラーが出るのではないでしょうか? そうだとすると多分、式中の「休日」が問題になっています。COUNTIF関数の第1引数はセル範囲を指定しなければいけないのですが、「休日」という名前を付けた範囲が存在すれば、問題ない式だと思います。 もともと「休日」という名前の範囲は存在したが、何かのはずみで削除されてしまったのではないでしょうか?リボンの「データ」の「名前の管理」で名前そのものを削除できるほか、名前を付けたままで該当のセル範囲を削除すると、参照がおかしくなります(「名前の管理」で見ると、その名前について、参照エラーが表示されています。)。 というわけで、「休日」という名前のセル範囲をもう一度正しく設定すれば、条件付き書式が発動するのでは。

naozen
質問者

お礼

解決しました! お手数おかけしました。ありがとございました!   =OR(WEEKDAY(S$3,1)=1,WEEKDAY(S$3,1)=7,S$3="",COUNTIF(休日,S$3))   WEEKDAYの部分がだめだったようで、上記の数式にしたら出来ました♪   色々調べましたが、土日のセルに色をつける方法が =WEEKDAY(セル)=1 という数式になっていたのでそのまま引用しましたが それがいけなかったようです。   大変お騒がせいたしました(≧▽≦)

naozen
質問者

補足

セルに直接数式をコピーしてみたのですが、#VALUE! と出ました;; 「休日」の範囲がおかしくなってたりとかのケアレスミスがないよう 何度も確認して、誤って範囲を消したりすることがないようしているので 休日の範囲指定の問題ではないようなのです。 ちなみに、【S$3=""】がない数式では、きちんと条件書式が適用されるのです。 ゆえに、謎で行き詰まりました(^-^;

すると、全ての回答が全文表示されます。
  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.1

COUNTIF(休日,S$3)はなんのために利用してるのでしょうか、同じS$3を利用してるみたいですが。

naozen
質問者

お礼

解決しました! お手数おかけしました。ありがとございました!   =OR(WEEKDAY(S$3,1)=1,WEEKDAY(S$3,1)=7,S$3="",COUNTIF(休日,S$3))   WEEKDAYの部分がだめだったようで、上記の数式にしたら出来ました♪   色々調べましたが、土日のセルに色をつける方法が =WEEKDAY(セル)=1 という数式になっていたのでそのまま引用しましたが それがいけなかったようです。   大変お騒がせいたしました(≧▽≦)

naozen
質問者

補足

すみません。説明不足でした。 COUNTIF()は、離れたセルに休日の一覧表を作成しており、その範囲を「休日」という名前を付けて 休日一覧表に該当する日付があれば条件に該当するように数式に組み込んでいます。 S3セルには、2012/6/27という形式で日付が入ります。

すると、全ての回答が全文表示されます。

関連するQ&A