[[20111209090038]] 『3つ以上の条件付書式』(さと) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『3つ以上の条件付書式』(さと)

 VBAは全く分からないエクセル初心者です。

 仕事上でのデータで、1行で1つの工程を見られるようにしています。
 (A列が工程名、B列が現状どこで作業が止まっているかの名称、C列が開始日…など)

 B列の工程途中の名称のセルに色を振り分けたいのですが、複数の条件で1つ、他の複数の条件で1つ…といったように、つけたい条件が全部で5つあります。

 3つ以上はマクロを組まなくてはできないことは理解しましたが、
 マクロが全く分からないのでお助けください。

 色をつけたい(振り分けたい)列はB列全体で、具体的な条件としては以下のイメージです。

 B列に@、A、B、C、D、E、Fが入力されている場合は、セルを「ローズ」
 B列にGが入力されている場合は、セルを「黄」
 B列にH、I、Jが入力されている場合は、セルを「薄いオレンジ」
 B列にK、L、M、N、Oが入力されている場合は、セルを「ラベンダー」
 B列にPが入力されている場合は、文字色を「青」

 という条件付書式を付けたいのです。
 データはどんどん増えていきます。入力されたら対応できるようにしておきたいのですが、このような事が可能でしょうか?

 Excel2003、WindowsXPで作成しております。
 お助けください、宜しくお願い致します。


 ここの下の方を見てください。
http://www.excel.studio-kazu.jp/lib/e2qw/e2qw.html
 BJ

 >1行で1つの工程
 B列に@〜Pとはどんな形で入力されているのですか。1つのセルに@・・Pすべて入力?

 BJ様
 そのページは拝見しておりましたが、マクロを理解できていないので応用できずにいました。
 せっかくご紹介してくださったのに申し訳ございません。

 >B列に@〜Pとはどんな形で入力されているのですか。1つのセルに@・・Pすべて入力? 
 いえ、@〜Pまでのいずれかが必ず入っている状態です。
 @〜Pまでの分類分けは、上記のとおりとなっております。

 お手数おかけいたします。(さと)


 AセルとBセルが並んでいます。2つのセルの組合せで 3×3 = 9通りまでの場合分けを実現できるのでは。

 > AセルとBセルが並んでいます。2つのセルの組合せで 3×3 = 9通りまでの場合分けを実現できるのでは。 

 Aセルには工程名、と書きましたが、正しくは工程発行番号が振り分けられていて、作業が増えると番号も増えていきます。

 以下、イメージ図です。

  A列      B列     C列     D列    E列     F列       Z列
 発行番号   現作業名   発生日    工程1   工程2    工程3   … 完了日
 AB-A11-001  検査員   2011/12/1  2011/12/3  
 AB-A11-002    完了    2011/12/4  2011/12/5  2011/12/7  2011/12/9   2011/12/12

 Aセルはあくまでも発行番号であり
 Bセルが発生日から完了日までの、その一連の作業のどこで止まっているかを表すセルとなっています。

 なので、今回の振り分け条件にはAセルは一切関与しない表となっています。

 やはり条件付書式のみでは不可能でしょうか。(さと) 

 2003以前の場合、条件付書式で設定出来る書式は3つ迄です。
 これは変えられません。

 ↑の名無しさんの提案は
  二つのセルを使って色分けをすれば9通り出来る
 と言う事だと思います。

  振り分け条件にA列のセルの状態を含める
 と言う事ではなく。

 全文検索はしてみましたか?
 良くある質問なので、探してみると ご要望にかなり一致したコードが
 見つかると思いますよ。

 似ているのは↓の辺り
[[20050115131721]] 『条件式書式を6つやりたいんですが・・・』(sirouto) 
[[20041021153913]] 『4種類以上の文字の色を変えるには』(さくらちゃん)

 まず、上側のスレを見て貰うと A列のセル色を変更するコードが有ります。
 >    If Target.Column <> 1 Then Exit Sub
 を    If Target.Column <> 2 Then Exit Sub    にして貰うと、B列のセルが対象に成ります。

 >    Case "さる"
 等を Case "@" ,"A","B","C","D","E","F" 等に変更

 >    colr = 3  'ここの色番号をお好きなように
 の所は、マクロの記録をとって番号を確認して書き替えて下さい。

 まずはこの辺りから初めて貰って 行き詰まったら何処で行き詰まったのか
 書込してもらえると良いと思います。

 (HANA)


 HANA様>

 レスありがとうございました。

 コードの意味が分からないので、HANA様が書いてくださった部分だけを
 書き換えて、ThisWorkbookの部分に貼り付けてみました。
 保存して閉じ、立ち上げなおしましたが、何も変化がありませんでした。

 このように書いてみました。

 Private Sub Worksheet_Change(ByVal Target As Range)
  '変数宣言
 Dim colr As Integer
     If Target.Count > 2 Then Exit Sub
     If Target.Column <> 2 Then Exit Sub
         Select Case Target.Value
             Case "@","A","B","C","D","E","F"
                 colr = 38 '
             Case "G"
                 colr = 6 '
             Case "K","L","M","N","O"
                 colr = 39 '
             Case "H","I","J"
                 colr = 40 '
             Case "P"
                 colr = 2 '
             Case "Q"
                 colr = 15 '
             Case Else
                 colr = xlNone
         End Select
         Target.Interior.ColorIndex = colr
 End Sub

 本当はPはセルを白、フォントを「青」にしたいのですが
 分からなかったので、セルの色指定だけをしてみました。

 どこがいけなかったのでしょうか。

 (さと)


 Worksheet_ChangeイベントプロシージャはSheetモジュールに
記載すべきものです。
また、Changeイベントはセルの編集が実行トリガーになります。
また、Targetは編集されたセルへの参照が格納されますから、
ご提示のマクロはあくまでB列のセルに入力等の編集を行った
時に実行されるものです。
 
したがって、ThisWorkbookモジュールに貼り付けて保存したものを
開いただけでは何も起こりません。
(みやほりん)(-_∂)b

 (みやほりん)(-_∂)b様>

 ありがとうございます、各シートにそれぞれを貼り付け
 教えて頂いた通りB列を入力しなおしたらできました!

 感激です…。ありがとうございます。

 もうひとつ解決させたい箇所があるのですが、教えてください。
 Pはセルを白、フォントを「青」にしたいのですが
 どこを書き換える、書き加えるなどすれば良いのでしょうか。

 あと一歩の所まで来て本当に嬉しいです。

 どうかよろしくお願いいたします。

 (さと)

 フォントに関しては、通常の条件付書式を使って設定して
 一応の希望の形ができました。

 この質問はこれにて解決とさせていただきます。

 ご意見、ご教授くださいましたみなさま、ありがとうございました。

 (さと)

 みやほりんさん、フォロー有り難う御座います。

 >この質問はこれにて解決とさせていただきます。
 と言う事ですが。。。。

 過去ログを二つリンクしましたが、上側のスレが基本コードと背景色を変更するコード
 下側のスレが、フォントに関するコードが載っている と言うつもりでした。

 下側のスレを見て貰うと
 >>>あっ 背景じゃなかったOrz
 >>>すいません 
 >>>.Interior.ColorIndex こっちは背景です
 >>>をすべて
 >>>.Font.ColorIndex こっちが文字の色です
 >>>に変更してください。
 >>>
 >>>(Null)

 と書いてあって、その上までが 背景色の変更。その下が文字色の変更の
 コードに成っていますので、見比べて貰うと分かりやすいと思いますが。。。

 今回の場合、文字色だけが単独で変われば良いので
 同じ様な作りのコードにして
 End Sub の上に
         Select Case Target.Value
             Case "P"
                 colr = 5
             Case Else
                 colr = 0
         End Select
         Target.Font.ColorIndex = colr
 を入れておくだけでも良いかもしれません。

 (HANA)


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.