Excel。VBA。特定の色で塗りつぶされたセルのみを数えたい
<VBA:色を数える>
Excelは、単純に塗りつぶしたセル数を求められる関数は用意されていませんので、一発で求めることはできません。
どうしても数えたい場合には、オートフィルターをつかって抽出した件数を求めることはできますが、少し面倒です。
そこで、Excel VBAをつかって、指定した色で塗りつぶされているセルだけを求めるプログラム文をつくることにしました。
今回用意した表です。
B2:D5で、A7と同じ色で塗りつぶされているセルの数を知りたいわけです。
B5とC4は数えたくないわけです。
そのため、単純に、セルが塗りつぶされているかどうかで、判断するわけにはいきません。
指定されている色を把握する必要があります。
では、Excel VBAのプログラム文を確認してみます。
Sub 指定した色を数える()
Dim kinmuhani As Range
Dim yasumi As Range
Dim Cell As Range
Dim i As Integer
Set kinmuhani = Range("B2:D5")
Set yasumi = Range("A7")
i = 0
For Each Cell In kinmuhani
If Cell.Interior.Color = yasumi.Interior.Color Then
i = i + 1
End If
Next Cell
Range("B7").Value = i
End Sub
まずは、実行してみましょう。
A7と同じ色で塗りつぶされているセルは2つありますので、正しく求めることができています。
では、プログラム文を確認しておきましょう。
まずは、変数宣言です。
Dim kinmuhani As Range 範囲選択を代入させます
Dim yasumi As Range A7の塗りつぶしの色情報を代入します。
Dim Cell As Range セルをチェックする変数です。
Dim i As Integer 一致するセルの数を格納する変数です。
用意した変数に、指定した範囲選択を代入します。
Set kinmuhani = Range("B2:D5")
Set yasumi = Range("A7")
For Each文で範囲選択内を繰り返して、チェックします。
For Each Cell In kinmuhani
If Cell.Interior.Color = yasumi.Interior.Color Then
i = i + 1
End If
Next Cell
範囲選択内のセルの塗りつぶした色と、A7の塗りつぶした色が同じならば、変数iに1を加算します。
このようなプログラムを用意しておくと、単純な塗りつぶしされているセルを数えるには重宝するかと思います。