水曜日, 8月 26, 2020

Excelで色分けセルのカウント方法はユーザー関数で

非常に特殊なデータで、記号とは別に諸般の事情で色分けしているデータの色割れ部分をカウントしたかったのですが、関数が見当たりませんでした。そこで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