リチャードは、検索と置換を使用して、特定の塗りつぶし色を使用してフォーマットされたセルをカウントしようとしています。塗りつぶしが条件付き書式の結果である場合を除いて、これは正常に機能します。この場合、Find andReplaceはそれらを検出しません。ただし、塗りつぶしの色に基づいて、条件付きでフォーマットされたセルを含む行をフィルタリングすることは可能です。リチャードは、オートフィルターがいずれかのタイプのセルの書式設定を検出できる場合、検索と置換でそれらのセルを見つけることができないのはなぜか疑問に思います。

もちろん、「なぜ」として提供される可能性のあるものはすべて推測になります。 (なぜマイクロソフトが彼らのやり方で物事を行うことを選んだのか疑問に思うことがよくあります。)そうは言っても、置換可能なものを見つけることができるように検索と置換をコーディングするのは理にかなっています。条件付き書式の結果として表示される塗りつぶしの色は、実際の塗りつぶしの色ではなく、表示色です。表示色を入れ替えることができないため、表示色が見つからないことになります。

ただし、別の方法を使用して、必要なカウント(マクロ)を表示することもできます。次のマクロは、特定の範囲内のすべてのセルを調べ、目的の色に一致するものが見つかった場合、カウンターがインクリメントされます。 (検査されるのは.DisplayFormatオブジェクトであるため、「表示されたままの」色です。つまり、条件付き書式が表示する色とも一致します。)

Sub CountCellColors()

Dim Rng As Range     Dim c As Range     Dim Colr As Variant     Dim J As Integer     Dim sTemp As String

Set Rng = Range("A1:Z500") 'Change as needed     Colr = vbYellow            'Set color you want to count

J = 0     sTemp = ""

For Each c In Rng         If c.DisplayFormat.Interior.Color = Colr Then             J = J + 1             sTemp = sTemp & vbCr & "     " & c.Address         End If     Next c

Select Case J         Case 0             sTemp = "There are no colored cells in the range."

Case 1             sTemp = "There is 1 colored cell in the range:" _               & vbCr & sTemp         Case Else             sTemp = "There are " & J & " colored cells in the range:" _               & vbCr & sTemp     End Select     MsgBox sTemp End Sub

マクロの実行が完了すると、一致した色の数と一致したセルのアドレスを示すメッセージボックスが表示されます。記述されているように、マクロはセルA1:Z500をチェックし、セルの黄色の塗りつぶしを探します。これらの値が設定されている両方の行は、ニーズに適したものに変更できます。

注:

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

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

このヒント(13742)は、Microsoft Excel 2007、2010、2013、2016、2019、およびOffice365のExcelに適用されます。