[[20091121165102]] 『条件付き書式3つ以上』(ちいこ) ページの最後に飛ぶ

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

 

『条件付き書式3つ以上』(ちいこ)

 いつもお世話になっています。
 今回も知恵をお借りできたらと思います!
 表題の通り、条件付き書式を3つ以上設定したいのです。
 過去記事検索をしてみましたが、答えを導き出せず・・・すいません。

 Excel2003です。

 下記のような表があります。

    1月 2月 3月 4月 5月 6月 条件
   +----+----+----+----+----+----+----+
 1 |1100|2000|3100|1500|1800|2200|  |
   +----+----+----+----+----+----+----+
 2 |0.54|0.63|0.43|0.38|0.55|0.62|0.50|
   +----+----+----+----+----+----+----+
 3 |  12|  10|  21|  15|  17|  13|  |
   +----+----+----+----+----+----+----+
 4 | 480| 500| 550| 750| 500| 600| 580|
   +----+----+----+----+----+----+----+
 5 |井上|山田|山田|佐藤|佐藤|佐藤|  |
   +----+----+----+----+----+----+----+

 条件欄に数字が入っている項目については(この場合、2と4)
 各月の数字が条件欄の数字を下回った場合
 背景色を赤、文字色を白。

 5に入っている人の名前を見て、
 人が切り替わった時に、表全体に罫線を入れる。

 ↓罫線結果。

    1月 2月 3月 4月 5月 6月 条件
   +----+----+----+----+----+----+----+
 1 |1100|2000 3100|1500 1800 2200|  |
   +    +         +              +----+
 2 |0.54|0.63 0.43|0.38 0.55 0.62|0.50|
   +    +         +              +----+
 3 |  12|  10   21|  15   17   13|  |
   +    +         +              +----+
 4 | 480| 500  550| 750  500  600| 580|
   +    +         +              +----+
 5 |井上|山田 山田|佐藤 佐藤 佐藤|  |
   +----+----+----+----+----+----+----+

 このようになって欲しいのですが、
 どのようにVBAを作成すればいいでしょうか?

 よろしくお願いします。


 条件付き書式は 
 >条件欄に数字が入っている項目については(この場合、2と4)
 >各月の数字が条件欄の数字を下回った場合
 >背景色を赤、文字色を白。
 と
 >5に入っている人の名前を見て、
 >人が切り替わった時に、表全体に罫線を入れる。
 の2つなので、普通に条件付書式で出来ます。
 例えば条件1の数式を
 =AND($H2<>"",B2<$H2)
 条件2の数式を 
 =B$6<>C$6
 (sasa)

 条件付き書式では出来ませんので。。。。
 マクロです。

 但し、自動では実行されませんので
 入力が終わったら手動で実行してください。

 '------
Sub chiiko()
Dim i As Long, ii As Long
Dim mr As Long, mc As Long
Dim tbl As Variant
mr = Cells(Rows.Count, 1).End(xlUp).Row
mc = Cells(1, Columns.Count).End(xlToLeft).Column
    With Range("A1").Resize(mr, mc)
        tbl = .Cells.Value
        .Interior.ColorIndex = xlNone
        .Font.ColorIndex = xlAutomatic
         .Borders.LineStyle = True
        .Resize(mr - 1, mc - 1).Offset(1) _
            .Borders(xlInsideHorizontal).LineStyle = xlNone
        For i = 2 To mr - 1
            If tbl(i, mc) <> "" Then
                For ii = 1 To mc - 1
                    If tbl(i, ii) < tbl(i, mc) Then
                        Cells(i, ii).Interior.ColorIndex = 3
                        Cells(i, ii).Font.ColorIndex = 2
                    End If
                Next
            End If
        Next
        For i = 1 To mc - 2
            If tbl(mr, i) = tbl(mr, i + 1) Then
                .Resize(mc, 2).Offset(0, i - 1) _
                        .Borders(xlInsideVertical).LineStyle = xlNone
            End If
        Next
    End With
End Sub
 '------

 (HANA)

 お返事が大変遅くなり、申し訳ありません!
 sasaさん、HANAさんありがとうございます!!

 sasaさん、ありがとうございます!
 でもすいません、私の説明不足でした。
 実は、罫線は太線が引きたくて、
 現在はあらかじめ太線を引いておき、条件付き書式で細線を入れているのです。
 それだけですでに条件3つを使っており、さらに色付けの条件を入れたかったのでした・・・

 HANAさん、ありがとうございます!!
 このマクロを分解し、どこで何をしているのかなんとか理解できました。
 自分の表に当てはめられるように変更して
 希望通りの罫線と色づけをすることができました!
 おかげで少しVBAの知識も深まりました。
 どうもありがとうございました!!

 (ちいこ)

 >実は、罫線は太線が引きたくて、
 > 現在はあらかじめ太線を引いておき、条件付き書式で細線を入れているのです。
 > それだけですでに条件3つを使っており、さらに色付けの条件を入れたかったのでした・・・
 分かっています。
 但し先にレスしたように条件は2つのみで出来ます。
 (背景色を赤、文字色を白にで1つ。罫線の処理で1つ)
 なにを持って条件3つといっているのですか?
 ま、理解できないのなら好きにして下さい。
 (sasa)

 【罫線がセルの片方にだけひかれているときに】
 条件付き書式だけで可能ですね。

 この
【罫線がセルの片方にだけひかれているときに】
 と言う条件は、重要な点だと思いますが。。。

 罫線がセルの両側に引かれている時は
  1.左右の名前が等しい → 左右の罫線を変更
  2.左 の名前が等しい → 左 の罫線を変更
  3. 右の名前が等しい →  右の罫線を変更
 の三つのパターンが、どうしても必要に成ると思いますので。

 例えば、範囲のセルに細線を引く(あるは罫線を削除)しておいて
 1.1月の範囲を選択して セルの書式設定から
   右側に太線を引く
 2.この範囲をコピーして6月までの範囲に貼り付ける
 3.表全体を太線で囲う

 これで、縦罫線が太線の表が出来ますが
 太線はセルの右側にしか引かれていないので
 右側の名前だけを確認して、罫線の設定を
 変更すれば良いことになります。

 表の範囲を選択して於いて
 条件付き書式の設定で
  条件1 値未満,右側の名前と等しい → セル色赤,文字色白 , 右側の罫線を細線に
  条件2 値未満           → セル色赤,文字色白
  条件3        右側の名前と等しい →           右側の罫線を細線に

 表がA列から始まっていて、A列の左側を太線にしていた場合
 うっかりそのセルをコピーして貼り付けをして仕舞うと
 希望する結果は得られなくなってしまいますが
  ・うっかりしない
 とか
  ・表の左側に一列以上設ける
 等で対応出来るかもしれません。

 (HANA)

コメント返信:

[ 一覧(最新更新順) ]


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