| 
    
     |  | ▼やま さん: おはようございます。
 
 >やっとここまで出来ました
 >これに範囲D4からデータのあるD列最終行と
 >色設定を教えて下さい。よろしくお願いします。
 >色は 1位に・・・赤
 >   2位に・・・緑
 >   3位に・・・青
 >   4位に・・・ピンク
 >   5位に・・・オレンジ です
 以前作成したFindメソッドのサブルーチンが目に付いたので
 これを使いました。
 
 標準モジュールに
 '============================================================
 Sub 番号順()
 Dim i As Long
 Dim j As Long
 Dim ans As Variant
 Dim rng As Range
 Dim samecnt As Long
 Dim clarray As Variant
 j = 1
 clarray = Array(3, 10, 5, 7, 46)
 With Range("d4", Cells(Rows.Count, "d").End(xlUp))
 For i = 1 To 5
 j = j + samecnt
 ans = Application.Large(.Cells, j)
 If IsError(ans) Then Exit For
 samecnt = Application.CountIf(.Cells, ans)
 Set rng = get_findcell(ans, .Cells)
 Do Until rng Is Nothing
 rng.Interior.ColorIndex = clarray(i - 1)
 Set rng = get_findcell()
 Loop
 Next
 End With
 End Sub
 '============================================================
 Function get_findcell(Optional ByVal f_v As Variant = "", _
 Optional ByVal rng As Range = Nothing, _
 Optional ByVal alookin As XlFindLookIn = -4163, _
 Optional ByVal alookat As XlLookAt = 1, _
 Optional ByVal aso As XlSearchOrder = 1, _
 Optional ByVal asd As XlSearchDirection = 1, _
 Optional ByVal mc As Boolean = False, _
 Optional ByVal mb As Boolean = True) As Range
 '指定された値でセル範囲を検索し、該当するセルを取得する
 'input : f_v 検索する値
 '    rng 検索する範囲
 '    alookin 検索対象 xlvalues,xlformulas,xlcomments
 '    alookat: :検索方法 1-完全一致 2-部分一致
 '    aso : 検索順序 1 行 2 列
 '    asd : 検索方向 1 Xlnext 2 XlPrevious
 '    mc  : 大文字・小文字の区別 False しない True する
 '    mb  : 半角と全角を区別   True する  False しない
 'output:get_findcell 見つかったセル(見つからなかったときはNothingが返る)
 Static 検索範囲 As Range
 Static 最初に見つかったセル As Range
 Static 直前に見つかったセル As Range
 Static 検索方向 As XlSearchDirection
 If Not rng Is Nothing Then
 Set 検索範囲 = rng
 End If
 If f_v <> "" Then
 Set get_findcell = 検索範囲.Find(f_v, 検索範囲.Cells(検索範囲.Rows.Count, 検索範囲.Columns.Count), _
 alookin, alookat, aso, asd, mc, mb)
 If Not get_findcell Is Nothing Then
 Set 最初に見つかったセル = get_findcell
 Set 直前に見つかったセル = get_findcell
 検索方向 = asd
 End If
 Else
 If 検索方向 = xlNext Then
 Set get_findcell = 検索範囲.FindNext(直前に見つかったセル)
 Else
 Set get_findcell = 検索範囲.FindPrevious(直前に見つかったセル)
 End If
 If get_findcell.Address = 最初に見つかったセル.Address Then
 Set get_findcell = Nothing
 Else
 Set 直前に見つかったセル = get_findcell
 End If
 End If
 End Function
 
 同じ数字があっても取り合えず、
 1番大きい数字のあるセルは、全部 赤に塗りつぶす
 2番目に大きい数字のあるセルは、全部 緑に塗りつぶす
 ・
 ・
 
 という処理にしました。
 
 意味合いが違うなら、プロシジャー番号順を変更してください。
 
 |  |