9/08/2022

Excel。VBA。大量のデータから該当する一部を塗りつぶしてわかりやすくしたい【lots of data】

Excel。大量のデータから該当する一部を塗りつぶしてわかりやすくしたい

<Excel VBA:Interiorプロパティ>

該当するデータをわかりやすくするのに、「条件付き書式」をつかう方法もあります。


ただ、条件付き書式の設定自体は簡単でも、条件数が増えたり、データが増えたり、列数が増えたりすると、範囲選択をして設定するのも面倒になってきます。


そこで、Excel VBAでプログラムをつくって、次の表に塗りつぶしを設定していきます。


今回は、Listening・Writing・Readingの3列を対象とします。


塗りつぶしするセルは、70点台(70~79点)とします。


次のようにプログラムを作ってみます。

Sub 一部色分け()

    Dim i As Long

    Dim j As Long

    

    For j = 2 To 4

        For i = 2 To 11

            If Cells(i, j) >= 70 Then

                If Cells(i, j) < 80 Then

                    Cells(i, j).Interior.ColorIndex = 6

                End If

            End If

        Next

    Next

End Sub


まずは、実行してみましょう。


このように、70点台のセルに塗りつぶされていることが確認できます。


では、プログラム文を確認してみましょう。


最初は、変数宣言ですね。

Dim i As Long

Dim j As Long


これらの変数は、このあとのFor To Next文の繰り返しで使います。


For j = 2 To 4

    For i = 2 To 11

        If Cells(i, j) >= 70 Then

            If Cells(i, j) < 80 Then

                Cells(i, j).Interior.ColorIndex = 6

            End If

        End If

    Next

Next


最初のFor文は、列方向の繰り返し処理をするためのものです。

二番目のFor文は、行方向の繰り返し処理をしていきます。


70点台の判定は、IF文をつかって、判断させています。

IF文をシンプルに重ねて、70点以上で80点より小さいのかを判断させています。


この条件に合致したら、塗りつぶしの処理を行います。

Cells(i, j).Interior.ColorIndex = 6


Interiorプロパティをつかうことで、セルを塗りつぶすことができます。


このように、列・行方向に何回繰り返すのかをFor文を2つ使い、IF文などの判断行を含めるだけで、該当するセルのみに塗りつぶし処理をすることができます。


何度も同じ処理を繰り返すようならば、Excel VBAでプログラム文をつくってみるのもいいかもしれませんね。