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列にある文字に設定した文字の色の件数を数えることができました。

