Excelを使用すると、ブックのセルにあらゆる種類の書式を適用できます。できることの1つは、パターンまたは色を使用してセルを「シェーディング」することです。 (これは、[セルの書式設定]ダイアログボックスの[パターン]タブで行います。)ある時点で、範囲内のセルの数がシェーディングされていることを知りたい場合があります。

影付きのセルを数えることができるExcelのワークシート数式はありません。代わりに、これを行うために独自のマクロを開発する必要があります。次のマクロは、この問題に取り組む方法の例です。 A1からJ20の範囲の影付きセルの数をカウントし、そのカウントをセルA1に配置します。

Sub CountColor()

Dim irow, icol As Integer

Cells(1, 1) = 0     For irow = 1 To 20         For icol = 1 To 10             If Cells(irow, icol).Interior.ColorIndex _               <> xlColorIndexNone Then                 Cells(1, 1) = Cells(1, 1) + 1             End If         Next icol     Next irow End Sub

ルーチンの中心は、各セルのColorIndexと事前定義されたxlColorIndexNone定数の間で行われる比較であることに注意してください。それらが等しくない場合、セルは何らかの方法でシェーディングされています。

これと同じ基本的な手法をカスタム関数に簡単に適合させることができます。

以下では、同じ比較がセルごとに行われることに注意してください。

Function FindShades(a As Range) As Integer     FindShades = 0     For Each c In a         If c.Interior.ColorIndex <> xlColorIndexNone Then             FindShades = FindShades + 1         End If     Next c End Function

この関数を使用するには、セル内で数式として使用し、数式で範囲を指定するだけです。

= FindShades(B7:E52)

注:

このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。

_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。

このヒント(2059)は、Microsoft Excel 97、2000、2002、および2003に適用されます。