Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


2638 / 13646 ツリー ←次へ | 前へ→

【66587】条件付書式 青空 10/9/12(日) 9:47 質問[未読]
【66590】Re:条件付書式 残暑見舞い 10/9/12(日) 17:23 発言[未読]
【66592】Re:条件付書式 残暑見舞い 10/9/13(月) 7:44 発言[未読]
【66746】Re:条件付書式 青空 10/10/3(日) 14:22 お礼[未読]
【66747】Re:条件付書式 残暑見舞い 10/10/3(日) 15:18 発言[未読]
【66755】Re:条件付書式 残暑見舞い 10/10/3(日) 22:13 発言[未読]
【66774】条件付書式 青空 10/10/5(火) 20:48 お礼[未読]
【66775】Re:条件付書式 残暑見舞い 10/10/5(火) 21:15 発言[未読]
【66798】条件付書式 青空 10/10/6(水) 19:24 お礼[未読]

【66587】条件付書式
質問  青空  - 10/9/12(日) 9:47 -

引用なし
パスワード
       A     B    C    D
1    10     7    12   9
2    14    17    10   19
3    15    21    24   26
4    20    13    21   17
5    17    19    13   21
6    22    20    18   11
7    13    16    15   16
8     9    10    14   22  
9    18    12    16   18   
10    11     18    20   19
11    16    15    24   28
12    23    30    28   26
13    12    23    32   23
14    19    24    36   15
15    24    29    31   30


    A1からA15、B1からB15、C1からC15、D1からD15までのセル範囲に
    条件付書式で数値の小さい方から1から10番目まで色を変えて
    表示する方法を教えて下さい。

【66590】Re:条件付書式
発言  残暑見舞い  - 10/9/12(日) 17:23 -

引用なし
パスワード
   Excel2003までは3条件の制限があったが、Excel2007では無制限となったようです。
Excel2003以下なら、マクロで実行せざるを得ないでしょう。

一つの列を対象に
・ワークシート関数smallを使って、その列で小さい方からk番目の値を知る。
・その値で検索する
・そのセルに色をつける。
といった作業をマクロで行い、各順位について繰り返します。
これを各列で繰り返せばいいでしょう。

簡単なマクロ記録と、繰り返しの話ですから、
ご自分でトライしてみたらどうでしょうか。
それでも詰まったら、具体的に詰まっているところを質問して下さい。

なお、同一順序の時の取扱いをどうするかも検討したほうがいいでしょう。
10色もあると大小関係が判定できるんでしょうか?

【66592】Re:条件付書式
発言  残暑見舞い  - 10/9/13(月) 7:44 -

引用なし
パスワード
   別解。

E列に1〜15のダミーを入力しておく。
また順序に沿って配色を施したセル範囲を用意しておく。

A1:E15をA列をキーに昇順ソート。
色のついたダミー列をA1:A10に書式コピー。
B列〜D列に対して同様操作。
最後にE列でソートして元に戻す。

これをマクロ記録して、あとはそれを整理。
これでいかがですか?

【66746】Re:条件付書式
お礼  青空  - 10/10/3(日) 14:22 -

引用なし
パスワード
   Excel2003を使用してます

残暑見舞いさん
どうもありがとうございました。
残暑見舞いさんのいわれるように背景色が多くなると
みにくくなる事も分かりますが今後データが増えていく予定なので
やはり10番目まで背景色をつけたいと思います。


Sub Small()
  Dim myV As Long
  Dim FR As Range
  Dim i As Long, j As Long
  Dim firstAddress As String
  Dim myAry As Variant
  myAry = Array(3, 4, 6, 8, 7, 30, 43, 45, 17, 5)

   With Sheets("Sheet1")
    .Cells.Interior.ColorIndex = xlNone
    For i = 3 To 6
     For j = 1 To 10
      myV = WorksheetFunction.Small(.Range(.Cells(15, i), .Cells(34, i)), j)
      Set FR = .Range(.Cells(15, i), .Cells(34, i)).Find(myV, LookIn:=xlValues)
      If Not FR Is Nothing Then
        firstAddress = FR.Address
        Do
         If FR.Interior.ColorIndex = xlNone Then
           FR.Interior.ColorIndex = myAry(j - 1)
         End If
         Set FR = .Range(.Cells(15, i), .Cells(34, i)).FindNext(FR)
        Loop While FR.Address <> firstAddress
       End If
     Next j
    Next i
   End With
End Sub

9番目までは、背景色をつけられましたが10番目は背景色が赤になります。
対処方法を教えて下さい。
なお重複する数値は、同色を返す方法でお願いします。

【66747】Re:条件付書式
発言  残暑見舞い  - 10/10/3(日) 15:18 -

引用なし
パスワード
   >9番目までは、背景色をつけられましたが10番目は背景色が赤になります。
>対処方法を教えて下さい。
そういう事象は確認できませんが、
Findの引数を一部省略していることが関係していませんか?
例えば、LookAt:=xlWholeをきちんと指定するとか。

【66755】Re:条件付書式
発言  残暑見舞い  - 10/10/3(日) 22:13 -

引用なし
パスワード
   >>9番目までは、背景色をつけられましたが10番目は背景色が赤になります。
そうじゃなくて、一番小さい9に赤を塗ると同時に、
部分一致する19にも赤が塗られているだけではないですか?
と申し上げているのですがね。

【66774】条件付書式
お礼  青空  - 10/10/5(火) 20:48 -

引用なし
パスワード
   残暑見舞いさん

ありがとうございました。
せっかく教えて頂いたのですが
分からないので残念ながら今回の質問は、諦めます。
失礼します。

【66775】Re:条件付書式
発言  残暑見舞い  - 10/10/5(火) 21:15 -

引用なし
パスワード
   > 例えば、LookAt:=xlWholeをきちんと指定するとか。
これは試していないのですか?
Set FR = .Range(.Cells(15, i), .Cells(34, i)).Find(myV, LookIn:=xlValues,LookAt:=xlWhole)

【66798】条件付書式
お礼  青空  - 10/10/6(水) 19:24 -

引用なし
パスワード
   残暑見舞いさんのおっしゃる通りにコードを入力したら
できました。
ありがとうございました。

2638 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free