非常に特殊なデータで、記号とは別に諸般の事情で色分けしているデータの色割れ部分をカウントしたかったのですが、関数が見当たりませんでした。そこでCountifのように色をカウントするユーザー関数を作成してみました。
実際のデータは上の様な状態です。もちろんこの説明用のデータはダミーなで氏名もデタラメです。処理的にはマクロ機能でユーザー関数を作成します。実はこのダミーデータ作るのが一番面倒臭かったのは内緒です。
実際のソースは以下の様にしました。
赤字はコメント文なので記述しなくてもOKです。
-----------------
Function CountColor(WideRenge As Range, ColorDat As Range)
' ユーザー定義関数名はCountColor(セルの範囲,指定のセル)
' 括弧内で、WideRengeとColorDatをRange宣言
Dim rdata As Range
' rdataは、セル範囲(複数セル)を使うのでCellsではなくRange
CountColor= 0
' CountColorはゼロからスタート
For Each rdata In WideRenge
If rdata.Interior.Color = ColorDat.Interior.Color Then
' Interior.Colorとはセルの塗りつぶしの色
CountColor = CountColor + 1
' WideRengeの中のセル(rdata)にColorDataと同じ色があればColorDataに加算
End If
Next rdata
' マクロで編集したい場合は登録名(CountColor)をタイプして編集ボタンをクリック。
End Function
-----------------
作成後、数式バーで作成したユーザー関数をタイピングすると一覧に表示されます。通常の関数のようにダブルクリックして数式バーに固定し、必要なデータを入力して完了です。
=CountColor(B$2:K$20,E22)
(B$2:K$20の範囲からE20と同じ色のセルをカウントする。となります。
処理結果をフィルすれば残りの色についてもカウントです。
なお、作成したExcelデータf保存時にマクロ組み込み形式(xlsm)で保存する必要があります。また、ソースを修正したい場合は、登録名(CountColor)をタイプして編集ボタンをクリックします。
Office 365 2020