特定範囲のセル色別に合計を計算する


Excel VBAあらかると

 統計で色別(12食)に金額を分けた表がありその色別の金額の合計がほしい。
複数のシートが存在し、範囲も結構広く、手作業で計算するのが結構大変... といったリクエストです。
VBAでは、Interiorプロパティでセルの色を識別することができるのでそのコードを使ってサンプルを提示します。


 サンプル画面


  1. セル色を対象とする計算範囲はセルA2からD13です。セルの色はF列の9色を設定しています。
  2. 計算範囲のセル色とF列のセル色を比較し同じの時にその行のG列の金額欄にセルの値を加算、
    H列の件数に1UPする。
  3. セルG11、H11は計算した金額・件数の合計となる。セルG15・H15はA列からD列の金額および件数を加算したもの。
    よって、G11=G15 H11=H15 が成立する。 (計算結果のチェック用です。)


 マクロコード
 標準モジュールへ記述
Dim col(9) As Integer
Sub sum_color_tst()

For i = 2 To 10
  col(i - 1) = Cells(i, 6).Interior.ColorIndex
Next

Range("G2:H10").Select
Selection.ClearContents
Range("G2").Select

For c = 1 To 4 '列
  For r = 2 To 13 '行
   sw = 0
   For tb = 1 To 9
     If col(tb) = Cells(r, c).Interior.ColorIndex Then
       Cells(tb + 1, 7) = Cells(tb + 1, 7) + Cells(r, c)
       Cells(tb + 1, 8) = Cells(tb + 1, 8) + 1
       sw = 1
       Exit For
     End If
   Next tb
   If sw = 0 Then
      MsgBox "テーブルにない値が存在します。 " & r & " " & c, 69
   End If
Next r, c

End Sub



 お試し版ダウンロード 

○Download file: excv120.lhz    BookName: excv120.xls