上位3位の数値に網掛けする単純なマクロです.

目次

  1. 使い方
  2. マクロ

使い方

選択している各列で上位3位の数値を調べます.
そしてそれぞれを異なる色で網掛けします.

  • (文字列が混じっていない)数値にしか反応しません.
  • 値はプラスであるとします.(擬似的な最小値をゼロとしています.)
  • 同着があるときは,その全てに着色します.

マクロ

マクロのコードは以下の通りです.

Type MyValue
first As Long
second As Long
third As Long
End Type


Type MyColor
first As Variant
second As Variant
third As Variant
End Type


Sub 選択列において上位3つの数値に網掛けする()

Dim v As MyValue
v.first = 0
v.second = 0
v.third = 0

Dim c As MyColor
c.first = RGB(255, 150, 150)
c.second = RGB(150, 255, 150)
c.third = RGB(150, 150, 255)

Dim i, j As Long
j = Selection(1).Column

If Cells(1, j).SpecialCells(xlLastCell).Row < 2 Then
End
End If

Dim x As Range

For i = 1 To Cells(1, j).SpecialCells(xlLastCell).Row
For j = Selection(1).Column To Selection(Selection.Count).Column
Set x = Cells(i, j)
If IsNumeric(x) Then
Call UpdateValue(v, x)
End If
Next j
Next i

For i = 1 To Cells(1, j).SpecialCells(xlLastCell).Row

For j = Selection(1).Column To Selection(Selection.Count).Column

Set x = Cells(i, j)

If x = v.first Then
x.Interior.Color = c.first
ElseIf x = v.second Then
x.Interior.Color = c.second
ElseIf x = v.third Then
x.Interior.Color = c.third
End If
Next j

Next i

MsgBox "マクロを実行しました."

End Sub


Private Sub UpdateValue(ByRef v As MyValue, ByVal x As Range)

If x > v.first Then
v.third = v.second
v.second = v.first
v.first = x
ElseIf x = v.first Then
'pass
ElseIf x > v.second Then
v.third = v.second
v.second = x
ElseIf x = v.second Then
'pass
ElseIf x > v.third Then
v.third = x
End If

End Sub