 |
@「開発」タブから「Visual Basic」を実行します
|
 |
A「挿入」→「標準モジュール」を追加します
|
 |
B左図のようなコードで、オリジナルの関数を定義します
この VBA関数 は、指定されたセル範囲内で、A列のセルと同じ塗りつぶし色 を持つセルの個数をカウントするものです。
A列の各セルの色を基準に、その色で塗りつぶされているセルを数えます。 |
Function CountCellsWithFillColor(TargetRange As Range) As Long
|
TargetRange は、この関数に渡される セル範囲 です。 この範囲内のセルを調べて、特定の条件に一致するセルをカウントします。
関数は Long 型 を戻り値として返します。
この関数はセルの個数を返します。 |
Dim Cell As Range
Dim Count As Long
Dim RowNum As Long
Dim ReferanceColor As Long
|
Cell As Range
ループで各セルを調べるために使う変数です。
Count As Long
条件を満たすセルの個数をカウントするための変数です。
RowNum As Long
各セルの 行番号 を格納します。A列のセルを基準に色を比較するために使います。
ReferanceColor As Long
A列のセルの塗りつぶし色を格納する変数です。これと他のセルの色を比較します。 |
Count = 0
|
Count 変数を 0 に初期化します。 この変数で条件に一致するセルの個数をカウントします。 |
For Each Cell In TargetRange
|
For
Each ループを使って、指定された範囲 TargetRange 内の 各セル を順番に処理します。 |
RowNum = Cell.Row
ReferanceColor = Cells(RowNum, 1).Interior.Color
|
RowNum = Cell.Row
現在のセル Cell の行番号を取得し、それを RowNum に格納します。
ReferanceColor = Cells(RowNum, 1).Interior.Color
A列の対応する行番号 (RowNum) にあるセルの塗りつぶし色を取得し、それを ReferanceColor に格納します。
A列の色を基準に、他のセルの色と比較します。 |
If Cell.Interior.Color = ReferanceColor And ReferanceColor <> RGB(255,
255, 255) Then
Count = Count + 1
End If
|
If
文で、次の条件を確認します。Cell.Interior.Color = ReferanceColor
現在のセルの塗りつぶし色 (Cell.Interior.Color) が、A列の対応する行のセルと 同じ色 かどうかを確認します。
ReferanceColor <> RGB(255, 255, 255)
A列のセルの色が 白色(RGB: 255, 255, 255) でないかどうかを確認します。
白色の場合、塗りつぶしをカウントしないようにしています。
上記の条件が 両方満たされる場合、Count を 1 増やします。
A列のセルと同じ色で塗りつぶされているセルが見つかった場合にカウントします。 |
Next Cell
|
次のセルに対して同じ処理を繰り返します。 |
CountCellsWithFillColor = Count
End Function
|
最後に、Count に格納された、条件に一致するセルの個数を 戻り値 として返します。 これが関数の結果となります。 |
 |
C「関数の挿入」からユーザー定義関数を呼び出せます
|
 |
D引数として、セル範囲を指定します
|
 |
Eユーザー定義関数を使った数式も、通常の関数式と同じようにコピーして利用できます
|
 |
Fユーザー定義関数を使った数式の結果を更新する場合は、Ctrl+Alt+F9キーを使います
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
 |
|
|
●A列のセルと同じ色で塗りつぶされているセルの個数を表示する、
ユーザー定義関数を作る動画です
|