資料室 > 計算する > 集計する > 色の付いたセルを集計 > ユーザー定義関数を作成する【VBA】

ユーザー定義関数を作成する【VBA】

色の種類が4種類以上である場合には条件付書式の限界を超えるためこれを利用できない。VBAを利用してユーザー定義関数を作成、これを利用する方法が一つの方法として考えられる。

  1. 計算に使用するブックを開く。
  2. Altを押しながらF11キーでVBE(Visual Basic Editor)を起動
  3. [挿入(I)]>[標準モジュール(M)]で標準モジュールを作成
  4. 作成された標準モジュールをダブルクリック、コードウィンドウへ書きコードを貼り付け。
     
     Function CCSum(Target As Range, ColorNo As Variant, SumRng As Range) As Variant
       Rem CellsColorSum
       Rem 範囲内の指定色番号のである集計セル範囲を集計する
       Dim i As Long
       Dim MySum As Double
       Application.Volatile
       If Target.Count <> SumRng.Count Then
       CCSum = "セル数不一致"
       Exit Function
       End If
       If TypeName(ColorNo) = "Range" Then
         If ColorNo.Count > 1 Then
           MsgBox "引数ColorNoに指定できるセルは一つです"
           CCSum = "引数ColorNoセル指定不正"
           Exit Function
         End If
         ColorNo = ColorNo.Interior.ColorIndex
       ElseIf Not IsNumeric(ColorNo) Then
         CCSum = "引数ColorNo不正"
         Exit Function
       End If
       If ColorNo <> xlColorIndexNone Then
         If ColorNo > 56 Or ColorNo < 1 Then
         CCSum = "引数ColorNo不正"
         Exit Function
         End If
       End If
       For i = 1 To Target.Count
         If Target.Cells(i).Interior.ColorIndex = ColorNo Then
         MySum = WorksheetFunction.Sum(MySum, SumRng.Cells(i).Value)
         End If
       Next i
       CCSum = MySum
     End Function
     
  5. Altを押しながらQキーでVBE終了
  6. A1:A10で背景色赤(標準状態)のセルに対応するB1:B10を集計する場合、セル背景色基準で集計するセルへ次のように入力する
     =CCSUM(A1:A10,3,B1:B10)

上記の場合、二つ目の引数「3」が「背景色赤」を表すが、この色番号がわからない場合は調べる色に設定されているセルを直接指定する。
 =CCC(A1:A10,A1,B1:B10)

基本的に標準モジュールへ登録したブックでしか有効ではないので、複数のブックで有効とするにはアドイン登録するのが有効である。
なお、上記コードは試作サンプルであり、完全動作は保障しない。


前(条件付書式により色付けの自動化、集計) 目次 次(複数シートの同じ位置のセルを合計)


SEO [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送