訪問して頂きありがとうございます。まさふくろーです。
今回は、指定した色のセルを数える方法をご紹介します。
目次
指定した色のセルを数える
エクセルの機能を使用する場合
ここでは、エクセルの検索機能を使用する方法をご紹介します。
手順
検索画面を起動
①「ホーム」タブをクリック⇒②「検索と選択」をクリック⇒③「検索」を選択し、検索画面を起動します。
書式の設定
「書式」をクリックします。
①「塗りつぶし」タブをクリック⇒②検索する色を選択⇒③「OK」ボタンをクリックします。
「すべて検索」ボタンをクリックします。
指定したセルの色を数えることができます。
が
自作の関数を使用する場合
ここでは、エクセルVBAを使用する方法をご紹介します。
手順
VBEの起動
起動方法は、VBE(Visual Basic Editor)の起動手順まとめをご覧ください。
標準モジュールの作成
①「挿入」を選択⇒②「標準モジュール」を選択し、標準モジュールを作成します。
VBAコードの入力
VBE(Visual Basic Editor)のピンク枠の部分に、VBAコードを入力していきます。
入力するコードは以下になります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
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 |
関数の呼び出し
「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) |
最後まで読んでいただき、ありがとうございました!