質問: エクセルを使っている者です。 エクセルを使って、文化祭のシフト表を作っているのですが、 その作業のなかで、セルを何色か使って塗りつぶし、色別に仕事内容を見やすくしました。(行:時間 列:人の名前) そこまではいいんですが、みな平等に仕事を割り当てるため、選択した範囲内で塗りつぶされたセルの個数を色別に数えたいのです。 どんな関数を使えばよいでしょうか? 塗りつぶされたセルを、しかも色別にカウントする、そんな関数はあるのでしょうか?
回答: ユーザー定義関数を使った一例です。 <以下を標準モジュールに記入> Function IntColor(ByVal argRng As Range) As Integer '指定したセル(第1引数)の塗りつぶし色を返す関数 Application.Volatile IntColor = argRng.Cells(1, 1).Interior.ColorIndex End Function Function CountIntColor(ByVal argRng As Range, ByVal argIntColor As Integer) As Long '指定した範囲(第1引数)で指定した塗りつぶし色(第2引数)のセル個数を返す関数 Dim myCell As Range Application.Volatile CountIntColor = 0 For Each myCell In argRng If myCell.Interior.ColorIndex = argIntColor Then CountIntColor = CountIntColor + 1 End If Next myCell Set myCell = Nothing End Function <使い方> A1:A10の範囲でA1と同じ塗りつぶし色のセルが何個あるか? =CountIntColor(A1:A20,IntColor(A1))