[[20111220222402]] 『3つ以上の条件付き書式について』(ハッピー) ページの最後に飛ぶ

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

 

『3つ以上の条件付き書式について』(ハッピー)

E6〜E19に数字、D6〜D19に文字、C6〜C19に数字が入っています。

VBAを使ってE6〜E13の数字で最も大きい数字1位〜6位までをC列〜E列のデータを

太字にしてフォント色を付けるにはどうしたらいいのか教えてください。

《補足》

1位のフォント色を赤色(C列〜E列、太字)・・・E6〜E13で最も大きい数字

2位のフォント色を青色(C列〜E列、太字)・・・E6〜E13で2番目に大きい数字

3位のフォント色を緑色(C列〜E列、太字)・・・E6〜E13で3番目に大きい数字

4位のフォント色をベージュ色(C列〜E列、太字)・・・E6〜E13で4番目に大きい数字

5位・6位のフォント色を黒色(C列〜E列、太字)・・・E6〜E13で5番目6番目に大きい数字

7位・8位のフォント色を灰色(C列〜E列、太字にしない)・・・E6〜E13で7番目8番目の数字

E14〜E19はフォント色を灰色(C列〜E列、太字にしない)

よろしくお願いいたします。[Excel2003・Windows 7]


 まず、対象シートの使っていない列ならどこでもよいのでその列を作業列とします。

 投稿を見ると C,D,E列は、使用しているようなのですぐ隣のF列でも良いですが、
 ちょっと飛ばしてJ列を作業列にしてみると・・・。

 標準モジュールに

 Sub test1()
    With Range("j6:j19")
       .Formula = "=RANK(E6,$E$6:$E$19)"
    End With
 End Sub

 これでJ列には、E6:E19の範囲で数値が大きい値からの順位が表示されます。

 このJ列の順位を調べて1行ずつ書式を変更していったらどうでしょうか?
 (J列の順位を調べて1行ずつ書式を変更 というコードを書くということです)

 書式設定のコードは、マクロの記録を使えば、コードを生成してくれます。

 最後にJ列の数式は、消しておきます。

 こんな手順で検討してみては?

 ichinose


(ハッピー)です。
 Sub test1()
    With Range("j6:j13")
       .Formula = "=RANK(E6,$E$6:$E$13)"
    End With
 End Sub
上記の標準モジュールで、最も大きい数字からの順位が表示されたのですが、
下記のように表示するVBAを教えてください。

 1位のフォント色を赤色(C列〜E列、太字) 
 2位のフォント色を青色(C列〜E列、太字)
 3位のフォント色を緑色(C列〜E列、太字)
 4位のフォント色をベージュ色(C列〜E列、太字)
 5位・6位のフォント色を黒色(C列〜E列、太字)
 7位・8位のフォント色を灰色(C列〜E列、太字にしない)
 E14〜E19はフォント色を灰色(C列〜E列、太字にしない)

よろしくお願いいたします。


 私は、ハッピーさんにも考えていただく投稿しかしませんので・・・。

 セルのフォントに色をつけるコードは、マクロの記録を使ってコードを生成してください。

 生成されたコードの意味はHelpやGoogle等で検索し調べてください。

 VBAに限ったことではありませんが、
 プログラムの骨格には、基本的なパターンがあります。

 前処理

   |
   |
  0回以上の繰り返し処理
   |
   |
 後処理

 この前処理が前回投稿したJ列にE列の順位を付ける処理

 後処理が付けた順位を作業が済んだらクリアする処理
 これもマクロの記録で セルj6〜j19を選択し、Deleteキー押せば、コードを生成してくれます。

 後は、骨格で言う「 繰り返し処理」

 この場合、セルj6〜j19まで一つずつ調べていき、
 C,D,E列のフォントを順位あった色にしていくコードを書きます。
 If文を使えば可能だと思いますよ!!

 繰り返しは、この場合、For 〜 Next文を使ってみてください。

 使い方は、Helpやこのサイトの過去ログを調べると、沢山出てきます。

 例 
 1から入力された数値までの総和を計算するコードです。
 10と入力すると、55と表示されます。

 Sub 総和()
    Dim n As Variant
    Dim g0 As Long
    Dim ans As Long
    n = Application.InputBox("総和を求める数値を指定して", , , , , , , 1)
    If n <> False Then
       ans = 0
       For g0 = 1 To n
          ans = ans + g0
       Next
       MsgBox ans
    End If
 End Sub

 上記コードを解析して、For Next文を調べて見てください。

 ichinose


 ichinose様 ありがとうございます。

コメント返信:

[ 一覧(最新更新順) ]


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