• ベストアンサー

Excelの条件付き書式について

Excelの条件付書式について教えてください。 次のようなことをしたいです。 (1)10個のセルに次のような条件付書式を設定します。  ・条件1:セルの値が5以上だったらセルの塗りつぶし(パターン)を青色にする。  ・条件2:セルの値が5未満だったらセルの塗りつぶし(パターン)を赤色にする。 (2)別の1つのセルで上の10個のセルを監視して  すべてのセルが青色だったら"PASS"と表示する。  ひとつでも赤色のセルがあったら"FAIL"と表示する。 VBAを使用して、条件付書式が設定されたセルを参照し、 どちらの条件付書式が適用されているのか調べられるのなら、 それでもかまいません。 条件付書式でセルの色(パターン)を設定した場合、 セルの.Interior.ColorIndex 及び PatternColorを参照しても、 塗りつぶしはされてないという扱いになっているようです。 なにか方法があるでしょうか?

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

  • ベストアンサー
回答No.8

> (後で条件を変えられるように、"5"はA3等セルの参照にしてあります。) ならばセルの数式はIFとSUMPRODUCTが適切ですね。 =IF(SUMPRODUCT(($B$1:$B$10>=A3)*1)=10,"PASS","FAIL") セルの相対参照、絶対参照はこれでいいですか? なるほど SUCCESS FAILURE、PASSED REJECTEDとかじゃないんですね。

その他の回答 (7)

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.7

#1 #3 です。 いや、だから難しく考えないで(^^;) >(後で条件を変えられるように、"5"はA3等セルの参照にしてあります。) たとえ条件が変動するとしても、例えばB2に条件を >=5 とでも >=8 とでも書いて、B1セルに =IF(COUNTIF(A1:A10,B2)=10,"PASS","FAIL") とすればOKです。

  • matsu_jun
  • ベストアンサー率55% (146/265)
回答No.6

条件付書式の採用を諦めた方がいいかもしれませんね。 セルの塗りつぶしもマクロで行うということでいかがでしょう。 目的のシートのWorksheet_Changeイベント(任意のセルの内容が変化した時に発生するイベント)に力技で書き込めば解決できると思いますし、条件付書式を設定しなければならないセルが増えるほどマクロのFor Next文で回した方が早いと思います。 ただし、このイベントの冒頭に On Error GoTo ErrHand Application.EnableEvents = False の2行を、最後に ErrHand: Application.EnableEvents = True の2行を入れておかないと大変なことになってしまいますので、ご注意を。

回答No.5

(1) A1:A10までなら、その範囲を選択し、 条件のところで セルの値が 次の値以上 5  (書式ボタンを押して塗りつぶしを青に設定)→OKボタン 追加ボタン→ セルの値が 次の値より小さい 5  (書式ボタンを押して塗りつぶしを赤に設定)→OKボタン→OKAボタン (2) =IF(COUNTIF(A1:A10,">=5")=10,"PASS","FAIL") 条件付書式でつけた色はVBAでは取得できません。

lasley
質問者

補足

僕の質問の仕方が悪かったです。ごめんなさい。 (1)の10個のセルの条件、"5以上5未満"の"5"は 実は各セルごとに変わる可能性がありまして。 (後で条件を変えられるように、"5"はA3等セルの参照にしてあります。) 各セルごとに判定の条件は異なります。 そして各判定の総合判定として(2)を設定したいんです。 混乱させましたが、よろしくお願いいたします。

回答No.4

(1)ですが 数式が=A1>=5の時に書式のパターンで青を指定 数式が=A1<5の時に書式のパターンで赤を指定 (2)は既に出ている通りです。

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.3

補足ですが、 SUMPRODUCT((A1:A10>=5)*1) はA1:A10のセル範囲で5以上のデータ数を返します。したがって、そのデータ数が10であれば、すべてのセルが5以上になりますので、IF関数でPASSと表示させています。

回答No.2

(2)はこれでもできますね =IF(COUNTIF(A1:A10,">=5")=10,"PASS","FAIL")

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.1

(1)の10個のセルについて 1. すべてが5以上であれば、PASS 2. そうでなければ FAIL と考えれば、IF関数でできますよ。 A1:A10にデータかあるとして、 B1 =IF(SUMPRODUCT((A1:A10>=5)*1)=10,"PASS","FAIL") です。

lasley
質問者

補足

(1)の10個のセルには取得データが入ります。 そして、各セルの判定の条件はデータの様子をみて、 あとで変わる可能性があります。 その為、判定の条件は別のセルに書かれていて、条件付書式はそのセルを参照して判定しています。 条件付き書式を用いれば、判定の条件を変えたときにすぐに判定が表示(青と赤で)されるので便利だなぁと思ったのですが、 総合判定をするにはどうしたらいいのか分かりませんでした。 データを取得したときに、Pass Failを判定すればいいのですが、後で条件を変えたときには、ボタンでも押して各セルの判定をしなおさなければなりません。 条件付き書式を使うのはあきらめたほうがいいんでしょうか?

関連するQ&A