【EXCEL】指定した色のセルを数える方法

訪問して頂きありがとうございます。まさふくろーです。

今回は、指定した色のセルを数える方法をご紹介します。

指定した色のセルを数える

エクセルの機能を使用する場合

ここでは、エクセルの検索機能を使用する方法をご紹介します。

手順

検索画面を起動

①「ホーム」タブをクリック⇒②「検索と選択」をクリック⇒③「検索」を選択し、検索画面を起動します。

書式の設定

「書式」をクリックします。

①「塗りつぶし」タブをクリック⇒②検索する色を選択⇒③「OK」ボタンをクリックします。

「すべて検索」ボタンをクリックします。

指定したセルの色を数えることができます。

自作の関数を使用する場合

ここでは、エクセルVBAを使用する方法をご紹介します。

手順

VBEの起動

起動方法は、VBE(Visual Basic Editor)の起動手順まとめをご覧ください。

標準モジュールの作成

①「挿入」を選択⇒②「標準モジュール」を選択し、標準モジュールを作成します。

 

VBAコードの入力

VBE(Visual Basic Editor)のピンク枠の部分に、VBAコードを入力していきます。

 

 

入力するコードは以下になります。

関数の呼び出し

「C1」セルに「=ColorCnt(A1:A100)」と入力します。

Enterキーを押します。

VBAコードの保存

「ファイル」タブをクリックします。

 

 

「名前を付けて保存」を選択し、ファイル保存画面を起動します。

 

 

①ファイル名を入力⇒②「Excel マクロ有効ブック(*.xlsm)」を選択⇒③「保存」ボタンをクリックします。

 

解説

Functionプロシージャ

構文 Function 関数名(引数1 As データ型1[,引数2 As データ型2,・・・]) As データ型
       計算のための処理
       関数名 = 戻り値
End Function
解説 Functionプロシージャは、戻り値(計算結果の値)を返すことができるプロシージャなので、関数として利用できる。
「関数名」には、自分で独自の名前を指定する。
「()」の後ろのデータ型には、関数の戻り値のデータ型を指定する。
戻り値となるデータの種類から、適切なデータ型を選択する。
例えば、戻り値が整数なら「Integer」を選ぶ。
関数名の「()」の中では、関数内で用いる「引数」と、その「データ型」を指定し、関数で計算をする対象を決める。
引数名は独自の名前を設定してよい。
計算対象のデータの種類から、適切なデータ型を選ぶ。
引数とデータ型は、「,」(カンマ)で区切って複数指定できる。
「計算のための処理」には、引数を用いた計算の内容を記述する。
「関数名=戻り値」では、「関数名」には指定した名前を、「戻り値」では計算結果の値を指定する。
作成したFunctionプロシージャは、「ユーザー定義関数」としてワークシート上で使用できる。
ユーザー定義関数として使用するには、Functionプロシージャを標準モジュールに作成する。
黄色のセルの数を数える関数。戻り値は、数値型。

Function ColorCnt(rng As Range) As Double

     Dim RngObj As Range

     For Each RngObj In rng

            If RngObj.Interior.Color = RGB(255, 255, 0) Then

               ColorCnt = ColorCnt + 1

            End If

     Next

End Function

For Each~Nextステートメント

構文 For Each オブジェクト変数 In コレクション
       処理
Next (オブジェクト変数)
解説 「コレクション」内の各オブジェクトを「オブジェクト変数」に順番に代入して、「処理」を実行する。
コレクションに指定できるもの:
開いているすべてのブックを表すWorkbooksコレクション
すべてのシートを表すWorksheetsコレクション
セル範囲を表すRangeオブジェクト
「Next」の行の「オブジェクト変数」は、省略できる。
引数で指定されたセル範囲の分、カウントアップする。

Function ColorCnt(rng As Range) As Double

     Dim RngObj As Range

     For Each RngObj In rng

               ColorCnt = ColorCnt + 1

     Next

End Function

Interiorプロパティ

構文 Rangeオブジェクト.Interior
解説 セルの塗りつぶしを操作するためのInteriorオブジェクトを取得する。
セルB2~B3を黄色で塗りつぶす。
Range("B2:B3").Interior.Color = RGB(255, 255, 0)

最後まで読んでいただき、ありがとうございました!