[[20070522112804]] 『条件付き書式を10段階設定したい』(かわさき) ページの最後に飛ぶ

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

 

『条件付き書式を10段階設定したい』(かわさき)

0-100までの数値を0-10、11-20・・・と10づつに分けて、それぞれの値に応じてセルの色を変えたいのです。

条件付き書式では三つが限界ですので、困っています。

関数ではできない、らしいのですが、マクロならどうなのでしょうか?

それともエクセルでは無理なのでしょうか?


 全文検索で探して見て下さい(dack)

 ↓を、ご参考にしてみて下さい

 (10)Color関数
http://www.excel.studio-kazu.jp/DL/

 (Ohagi)

 例えば、このようなコードをシートモジュールに貼り付けます。
 
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rng As Range, a As Range, clr As Integer
    On Error Resume Next
    Set rng = Intersect(Target, Range("A1:A10"))
    If rng Is Nothing Then Exit Sub
    On Error GoTo 0
    For Each a In rng
        Select Case a.Value
            Case 1 To 10: clr = 3
            Case 11 To 20: clr = 4
            Case 21 To 30: clr = 5
            Case 31 To 40: clr = 6
            Case 41 To 50: clr = 7
            Case 51 To 60: clr = 8
            Case 61 To 70: clr = 9
            Case 71 To 80: clr = 10
            Case 81 To 90: clr = 22
            Case 91 To 100: clr = 23
            Case Else: clr = xlNone
        End Select
        a.Interior.ColorIndex = clr
    Next
End Sub
 
この場合、条件付書式もどきが設定されている範囲はA1:A10となります。
色は適当なので、お好きなもののColorIndexを入れてください。
 
ColorIndex一覧は、↓のコードで確認できます。
標準モジュールに貼り付けて、まっさらなシートをアクティブにしてから実行して下さい。
 
Sub Sample()
    Dim i As Long
    For i = 0 To 56
        With Range("A" & i + 1)
            .Value = i
            .Offset(, 1).Interior.ColorIndex = i
        End With
    Next
End Sub
 
(ROUGE)

 こんなのも...

 Private Sub Worksheet_Change(ByVal Target As Range)
 Dim r As Range
 If Intersect(Target,Range("a1:a10")) Is Nothing Then Exit Sub
 For Each r In Intersect(Target,Range("a1:a10"))
      If r.Value > 0 And r.Value <= 100 Then
           r.Interior.ColorIndex = _
           Choose(WorksheetFunction.RoundUp(r.Value/10,0),3,4,5,6,7,8,9,10,11,12)
      Else
           r.Interior.ColorIndex = xlNone
      End If
 Next
 End Sub
 (seiya)

 横から質問ですが?
For Each r In Intersect(Target,Range("a1:a10"))が
 解りません。for each r in のところです   (ちょいボケ親父)


 for each r in range("a1:a10)
 はわかりますか?
 (seiya)

 いえ、正直解りませんのと、
 >If Intersect(Target,Range("a1:a10")) Is Nothing Then Exit Sub
 これは、ターゲットとa1:a10の範囲が違っていたら抜けます。。。
 でいいんでしょうか?
 ヘルプではシート内の共有セル範囲となっているので
 試しに"a10"を"f10"に変えてみたりして、感じは解ったのですが?


 どの部分がわからないのでしょう?

 For Each r In Intersect(Target, Range("a1:a10"))

 Intersect(Target, Range("a1:a10"))
 Targetが複数セルの場合も想定して考えているので、
 たとえば、A1:B5 を選択した場合は、A1:A5(A1:B5 と A:A10の共通範囲)を対象にして
 範囲内をループさせています。
 (seiya)

 (seiya)さんへ
 意味が解りました、Intersect(Target, Range("a1:a10"))を
 Intersect(Target, Range("a1:f10"))にした時その範囲から外は
 色が変わらなっかたのはそうゆう事なんですね。
 for each  in は赤色になっているのは決まりごとですか?
 勉強している本に載ってないもので教えて下さい(ちょいボケ親父)


 追記 解りました。指定することですね(ちょいボケ親父)

コメント返信:

[ 一覧(最新更新順) ]


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