Excel Tips by pPoy

トップへ←Top    VBAへVBA  VBA基礎へVBA 基礎  一般へ一般  

Macro 色付きセルをカウントし、新規シートに色番号と
個数の一覧を作成する (Excel97,2000,2002)
色付けされたセルの数を色別にカウントし、結果を新規シートに書き出すマクロです。
単純に色番号の一覧に個数を表示しただけでは解り辛いので、色番号のセルに
その色番号を使用して塗りつぶします。
色番号は、1〜60 までありますが、実際に表示するのは使用された番号のみです。
≪準備≫

色付きセル

←このようなシートがあります。

ここの色分けされたセルの数を
色別にカウントします。

以下のコードを標準モジュールに
貼り付けてください。
Sub countColor()
'シート内の色付きセルの数をカウントし、
'新規シートに色番号と個数の一覧を作成する。
'2005/08/06 pPoy
    Dim x As Range, r As Range
    Dim sName As String             '現在のシート名
    Dim ans(60) As Double           '色番号格納配列
    Dim i As Integer, j As Integer
    
    j = False
    sName = ActiveSheet.Name
    
    '色番号別に個数を配列に格納
    For Each x In Worksheets(sName).UsedRange.Areas
        For Each r In x.Cells
            i = r.Interior.ColorIndex
            If i > 0 And i <= 60 Then
                ans(i) = ans(i) + 1
                j = True
            End If
        Next r
    Next x
    
    '新規シート追加
    If j = True Then
        Worksheets.Add
        'シートに転記
        With ActiveSheet
            '見出し設定
            .Range("a1").Value = "処理日: " & _
                                Format(Now, "yyyy/mm/dd (aaa) hh:mm")
            .Range("a2").Value = "対象シート名: " & sName
            .Range("a3").Value = "色番号"
            .Range("b3").Value = "色付きセル数"
            '検索結果は4行目から転記
            j = 4
            For i = 1 To 60
                If ans(i) <> 0 Then
                    With .Cells(j, 1)
                        .Value = i
                        .Interior.ColorIndex = i
                        .Font.FontStyle = "太字"
                    End With
                    .Cells(j, 2).Value = ans(i)
                    j = j + 1
                End If
            Next i
        End With
        MsgBox "処理終了〜!", vbOKOnly
    Else
        MsgBox "現在のシートに色付きのセルはありませんでした〜"
    End If
End Sub
≪結果≫

上記のマクロを、背景色をカウントしたいシートの上で実行してください。

結果

←新規シートが追加され、
使用済みの色番号の一覧と
セルの個数が表示されました。
≪注意1≫
  • 色番号 (カラーパレットの番号) は使用する PC で変更することができます。
    そのため、このマクロを実行する環境によっては結果が異なる場合があります。

  • 標準のカラーパレットの色番号一覧は、こちらです。 (頁の下の方にあります。)


この頁のTOPへTop
【念の為の注意書きです。】
このページ(下位ページ含む)の全ての物の無断転載を禁止いたします。
又、当ページ(下位ページ含む)に記載されていることは、全て自己の責任において実行してください。

Copyright(C) pPoy 2005-2010