10/26/2025

Excel VBA。文字の色を数えたい。しかも複数の文字の色【COLOR】

Excel VBA。文字の色を数えたい。しかも複数の文字の色

<Excel VBA>

データを見たところ、販売金額フィールドにある文字に色がついている。


しかも複数種類。


その文字の色が何件あるのかを求めたいんだけど、Excelにはそもそも、文字の色を数える関数は用意されていません。


今回のデータは、

文字の色を数えたい。しかも複数の文字の色

やりたいことは、C列の販売金額。文字に色がついている件数をF列に求めたい。


E列には、文字の色がついてある。


今回は2種類ですが、E列が増えれば、それにも対応したい。


このような内容だと、関数もないし、オートフィルターなどをつかって抽出した件数を求めるというの、大変です。


そこで、Excel VBA でプログラムをつくることにしました。

Sub 文字の色複数種類()

    Dim lastCRow As Long    ' C列の最終行(データのある行)

    Dim lastERow As Long    ' E列の最終行(色の指定がある行)

    Dim i As Long, j As Long

    Dim targetColor As Long

    Dim countMatch As Long


    ' C列の最終行を取得

    lastCRow = Cells(Rows.Count, "C").End(xlUp).Row


    ' E列の最終行を取得(色の指定がある行)

    lastERow = Cells(Rows.Count, "E").End(xlUp).Row


    ' E列の1行目から順に処理

    For i = 1 To lastERow


        ' E列のセルの文字色を取得(調べたい色)

        targetColor = Cells(i, "E").Font.Color


        countMatch = 0 ' 件数を初期化


        ' C列の1行目から最終行までチェック

        For j = 1 To lastCRow


            ' C列のセルの文字色が、E列の色と一致するか?

            If Cells(j, "C").Font.Color = targetColor Then

                countMatch = countMatch + 1

            End If

        Next j


        ' 件数をF列に表示(E列と同じ行)

        Cells(i, "F").Value = countMatch

    Next i

End Sub


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


F列にE列にある文字に設定した文字の色の件数を数えることができました。