[[20100801225619]] 『マクロで複雑な条件付き書式設定』(yoshi) ページの最後に飛ぶ

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

 

『マクロで複雑な条件付き書式設定』(yoshi)

次のようにSheet1の三つの範囲にそれぞれ4つ以上の条件付書式を設定したいのですが、可能でしょうか?

範囲「A1:A50」の条件

 1.セルが空白の場合、セルの背景を「白」にする。

 2.セルに「合格」の文字が入力された場合、セルの背景を「青」にする。

 3.セルに「0〜5」の値が入力された場合、セルの背景を「黄」にする。

 4.セルに「6以上」の値が入力された場合、セルの背景を「緑」にする。

範囲「B1:B50」の条件

 1.セルが空白の場合、セルの背景を「白」にする。

 2.セルに「合格」の文字が入力された場合、セルの背景を「青」にする。

 3.セルに「0〜30」の値が入力された場合、セルの背景を「黄」にする。

 4.セルに「31以上」の値が入力された場合、セルの背景を「緑」にする。

範囲「C1:C50」の条件

 1.セルが空白の場合、セルの背景を「白」にする。

 2.セルに「合格」の文字が入力された場合、セルの背景を「青」にする。

 3.セルに「0〜10」の値が入力された場合、セルの背景を「黄」にする。

 4.セルに「11以上」の値が入力された場合、セルの背景を「緑」にする。

Excel2003です。よろしくお願いします。


 2003 だと条件付き書式は3種類までですが、
 上記にない条件のときには背景色は何色なのでしょうか。

 もしそれが白(1と同じ)であれば、残りの3つを条件付き書式で設定すれば
 普通にできるかと思います。
 そうでなければ下記を参照されてはどうでしょうか。
http://www.excel.studio-kazu.jp/cgi-bin/estindex/estseek2.cgi?phrase=%E6%9D%A1%E4%BB%B6%E4%BB%98%E3%81%8D%E6%9B%B8%E5%BC%8F+3%E3%81%A4
 (Mook)

ありがとうございます!残り3つを条件付き書式でできそうだったのですが、一つ問題が・・・。条件付き書式では「空白」も0(ゼロ)と判断しているようで、色が変わってしまいます。ゼロと空白は区別出来ないのでしょうか? (yoshi)

 ANDで<>""を条件に付け加えてみてはどうでしょうか?
 =AND(A1<>"",A1>=0,A1<=5)

 (momo)

ありがとうございました。マクロを使わずできました!(yoshi)

度々、すいません。

次の場合は、マクロが必要になると思うのですが、どうでしょうか?

範囲「A1:A50」の条件

 1.セルが空白の場合、セルの背景を「白」にする。

 2.セルに「合格」の文字が入力された場合、セルの背景を「青」にする。

 3.セルに「0〜5」の値が入力された場合、セルの背景を「黄」にする。

 4.セルに「6〜9」の値が入力された場合、セルの背景を「赤」にする。

 5.セルに「10〜14」の値が入力された場合、セルの背景を「オレンジ」にする。

 6.セルに「15以上」の値が入力された場合、セルの背景を「緑」にする。

範囲「B1:B50」の条件

 1.セルが空白の場合、セルの背景を「白」にする。

 2.セルに「合格」の文字が入力された場合、セルの背景を「青」にする。

 3.セルに「0〜30」の値が入力された場合、セルの背景を「黄」にする。

 4.セルに「31〜34」の値が入力された場合、セルの背景を「赤」にする。

 5.セルに「35〜39」の値が入力された場合、セルの背景を「オレンジ」にする。

 6.セルに「40以上」の値が入力された場合、セルの背景を「緑」にする。

この場合、ゼロと空白の区別はつくでしょうか?

また、このように、ひとつのシートに複数の範囲を設定して条件を付けることは可能でしょうか?

(yoshi)


 >ゼロと空白の区別はつくでしょうか? 
 できます。
 シートモジュールです。
      ↓
 Private Sub Worksheet_Change(ByVal Target As Range)

    If Intersect(Target, Range("A1:B50")) Is Nothing Then Exit Sub
    With Target
        If .Column = 1 Then
            Select Case .Value
                Case ""
                    .Interior.ColorIndex = xlNone
                Case "合格"
                    .Interior.ColorIndex = 5 '青
                Case 0 To 5
                    .Interior.ColorIndex = 6 '黄
                Case 6 To 9
                    .Interior.ColorIndex = 3 '赤
                Case 10 To 14
                    .Interior.ColorIndex = 46 'オレンジ
                Case Is >= 15
                    .Interior.ColorIndex = 10 '緑
            End Select
        ElseIf .Column = 2 Then
            Select Case .Value
                Case ""
                    .Interior.ColorIndex = xlNone
                Case "合格"
                    .Interior.ColorIndex = 5 '青
                Case 0 To 30
                    .Interior.ColorIndex = 6 '黄
                Case 31 To 34
                    .Interior.ColorIndex = 3 '赤
                Case 35 To 39
                    .Interior.ColorIndex = 46 'オレンジ
                Case Is >= 40
                    .Interior.ColorIndex = 10 '緑
            End Select
        End If
    End With
 End Sub
 (kei)

 keiさんのを元にして複数範囲の変更に対応。
 (範囲を選択してCtrl+Enterで確定とか、範囲を選択してDeleteキーで一括削除等)

 Private Sub Worksheet_Change(ByVal Target As Range)
    Dim WK_RANGE    As Range

    If Intersect(Target, Range("A1:B50")) Is Nothing Then Exit Sub

    For Each WK_RANGE In Intersect(Target, Range("A1:B50"))
        With WK_RANGE
            If .Column = 1 Then
                Select Case .Value
                    Case ""
                        .Interior.ColorIndex = xlNone
                    Case "合格"
                        .Interior.ColorIndex = 5 '青
                    Case 0 To 5
                        .Interior.ColorIndex = 6 '黄
                    Case 6 To 9
                        .Interior.ColorIndex = 3 '赤
                    Case 10 To 14
                        .Interior.ColorIndex = 46 'オレンジ
                    Case Is >= 15
                        .Interior.ColorIndex = 10 '緑
                End Select
            ElseIf .Column = 2 Then
                Select Case .Value
                    Case ""
                        .Interior.ColorIndex = xlNone
                    Case "合格"
                        .Interior.ColorIndex = 5 '青
                    Case 0 To 30
                        .Interior.ColorIndex = 6 '黄
                    Case 31 To 34
                        .Interior.ColorIndex = 3 '赤
                    Case 35 To 39
                        .Interior.ColorIndex = 46 'オレンジ
                    Case Is >= 40
                        .Interior.ColorIndex = 10 '緑
                End Select
            End If
        End With
    Next
 End Sub

 (独覚)

keiさん、独覚さん、ありがとうございました!
感動しました!

コメント返信:

[ 一覧(最新更新順) ]


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