こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

条件付書式でOR関数を使うと空白セルに適用されない

Windows7(32bit) Microsoft Office Excel 2010です。

横軸が日付のカレンダーを作成しています。
各セルには下記のような値や数式を入力しています。

例)
A1セル 2013/12/1
B1セル =A1
C1セル =IF(B1="","",IF(MONTH(B1+1)=MONTH(B1),B1+1,""))
以降、オートフィルでAF5セルまで入力済み


別途作成した祝日表に一致する日付のセルと、日付が無い部分(2/29や4/31に当たる部分)のセルの色を変更するため、下記の条件付き書式を設定しました。

適用先:B1:AF5
定義した名前=祝日(参照範囲:$B$10:$AF$21)

=OR(INDEX(祝日,MONTH(B1),DAY(B1))<>"",B1="")


しかし、祝日表に一致した日付はセルの色が変わりますが、日付が無い部分が変わりません。
日付が無い部分は、それぞれ下記の数式を入力しています。

AD3: =IF(AC3="","",IF(MONTH(AC3+1)=MONTH(AC3),AC3+1,""))
AE3: =IF(AD3="","",IF(MONTH(AD3+1)=MONTH(AD3),AD3+1,""))
AF3: =IF(AE3="","",IF(MONTH(AE3+1)=MONTH(AE3),AE3+1,""))
AF5: =IF(AE5="","",IF(MONTH(AE5+1)=MONTH(AE5),AE5+1,""))

数式が入っている(=空欄と認識されていない)せいかと思い
条件付き書式を2つに分けて設定してみましたが、こちらは希望通りの動作をします。

適用先:B1:AF5

=B1=""
=INDEX(祝日,MONTH(B1),DAY(B1))<>""

ですので、素直に2つ設定すれば良いのですが
OR関数で設定するとなぜ動作しないのかが気になり、質問させて頂きました。

よろしくお願い致します。

投稿日時 - 2013-12-14 20:21:20

QNo.8386360

困ってます

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

ご質問の直接の回答として

>OR関数で設定するとなぜ動作しないのかが気になり、質問させて頂きました。

ORに入れた前半の「INDEX(祝日,MONTH(B1),DAY(B1))<>""」の部分、もうちょっと詳細にはMONTH(B1)とDAY(B1)が、""のセルに対して「エラー値」を計算してしまうため、OR関数全体がエラーになって条件付き書式が反応していません。

その意味で、OR関数で処理させる事は基本できないというのが回答になります。


方法1:
えっと?「祝日」セル範囲は、カレンダーの中に「何とかの日」とか記入して作成してるってことですね。
でしたら
=OR(B1="",IF(B1<>"",INDEX(祝日,MONTH(B1),DAY(B1))<>"")))
みたいな。


方法2:
祝日一覧の作り方を、たとえば縦一列に祝祭日会社の休業日の年/月/日をただ羅列しておくだけにしておいて、条件付き書式の方は
=OR(B1="",COUNTIF(祝日,B1))
みたいに作ります。

投稿日時 - 2013-12-14 21:27:16

お礼

ご回答ありがとうございます。

方法1について:
画像が思ったよりも小さくなってしまい、見辛い中ご推察頂きありがとうございました。
祝日のセル範囲はご指摘頂いた通りです。

=OR(B1="",IF(B1<>"",INDEX(祝日,MONTH(B1),DAY(B1))<>""))

と条件付き書式で設定することで、期待通りの動作となりました。
該当の数式を別のセルに入力した所、確かに#VALUEが表示されていました。
trueかfalseしか返して来ないと思って、きちんと確認が出来ていなかったようです。

例えば、書式が反映されていなかったAD3セルの場合だと
MONTH(AD3)とDAY(AD3)の値が取得出来ず、祝日表も当然参照できないということですね。


方法2につきましても、ご提案頂きありがとうございます。
この祝日表を別途使い回ししたく、年の変更が不必要なマトリックス表にしておりました。

ともあれ早速のご回答で助かりました。
ありがとうございました。

投稿日時 - 2013-12-14 22:29:22

ANo.3

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.4

No.1です!

画像を改めて拝見しました。
結局、祝日と月末の空白セルに色を付けたい!というコトですよね?

OR関数を使用する方法ではないのですが・・・
B1~AF5セルを選択 → 条件付き書式 → 新しいルール → 数式を使用して・・・ → 数式欄に
=COUNTIF(祝日,B1)
として好みの色を選択

これで「祝日」と月末の空白セルに色がつくと思います。m(_ _)m

投稿日時 - 2013-12-14 21:28:12

お礼

再度のご提案ありがとうございます。
上手く画像が上がっていなかったようで、大変失礼いたしました。

>> 祝日と月末の空白セルに色を付けたい!というコトですよね?

最終的な目標はその通りでした。(さらにルール1つで設定できれば良いなと)

質問の意図としては、自分の設定した部分のどこが間違っていたのか?という所に比重がありました。

ご提案頂いた方法も、今後の参考にしたいと思います。
ありがとうございました。

投稿日時 - 2013-12-14 22:42:41

ANo.2

=OR(INDEX(祝日,MONTH(B1),DAY(B1))<>"",B1="")

=OR(INDEX(祝日,MONTH(B1),DAY(B1))<>"",trim(B1)="")
としたらどうなります?

投稿日時 - 2013-12-14 21:06:47

補足

ご回答ありがとうございます。
trim()をつけてみましたが、残念ながら変化無しでした。

投稿日時 - 2013-12-14 21:21:21

お礼

おかげさまで、別の方法で解決致しました。
ありがとうございました。

投稿日時 - 2013-12-14 22:43:42

ANo.1

こんばんは!

質問に対する直接の回答ではないのですので、余計なお世話かもしれませんが、
おそらく空白セルの条件は「小の月」の場合に日付を表示させないためだと思いますので、

1行目の数式を↓に変えてみてはどうでしょうか?
A1セルにその月の「1日」のシリアル値を入力されるようですので、
B1セル(セルの表示形式は好みの「日付」)に
=IF(MONTH($A1+COLUMN(A1)-1)=MONTH($A1),$A1+COLUMN(A1)-1,"")

としてAF1セルまでオートフィルでコピーしてみてください。
これで小の月の場合の月末は空白になると思います。

こうした上で条件付き書式の設定ではどうでしょうか?m(_ _)m

投稿日時 - 2013-12-14 21:03:16

補足

ご回答頂きありがとうございます。
数式を変更するという手もありましたね。
こういう書き方も出来るのかと参考になりました。

ただ、残念ながらOR関数を使った条件付き書式ではやはりダメでした。
2つに分けた場合は大丈夫でした。

投稿日時 - 2013-12-14 21:20:28