• ベストアンサー

[Excel]配色セル数のカウント

↓条件付き書式ルールで、緑色に配色されたセルが1000以上ございます。 まず、 =AND(C$1=$A2,C2>=2)に配色 緑色で書式設定 その後、単純に緑色セル数をカウントしようと、検索すると0セルが見つかったと メッセージがリターンされます。 検索する文字列はブランクで、プレビューを緑色にしています。 ColorCount()で範囲、緑色セルで計算してもエラーになります。 再度、マニュアルで対象セルを緑色すると、直したセルはカウントアップします 何か方法ございますでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • SI299792
  • ベストアンサー率47% (772/1616)
回答No.5

まず、ColorCountというのは、Excel の関数にも、VBA にもありません。 ユーザー定義関数ですか? 条件付き書式でつけた色を調べるには、   Cell.DisplayFormat.Interior.Color を使う必要がありますが、これを使った関数は使用制限に引っかかり、セルからの呼び出せません。 対策ですが、この条件付き書式が、どの範囲に入れられたかが解らないとできません。 仮にC2:I8 に設定され、K1に結果を出すとします。 (1)緑色を数えるのはやめて、条件で数える。 =SUMPRODUCT((C1:I1=A2:A8)*(C2:I8>=2)) 大きさは実際の範囲に合わせて下さい。 (2)マクロであくまでも緑を数える。 Option Explicit ' Sub Macro1()   Dim Cell As Range   Dim Count As Integer '   For Each Cell In [C2:I8]     Count = Count - (Cell.DisplayFormat.Interior.Color = vbGreen)   Next Cell   [K1] = Count End Sub K1、C2:I8 は変更して下さい 但し、緑にもいろいろあり、実際にどの色を指定したか判らないので、動かない可能性もあります。色コードが解れば vbGreenを置き換えて下さい。解らない場合、ColorCountでどのように色を設定しているのか、又はどのように緑色を設定したか書いていただけますか。

genesis50
質問者

お礼

ありがとうございました。 条件付き書式ルールで、黄色に書式を変えました。 ↓ステートメントで、対象セル数のカウントできました。 緑色(65280)の設定が間違えているようです Cell.DisplayFormat.Interior.Color = vbYellow

その他の回答 (4)

  • masnoske
  • ベストアンサー率35% (67/190)
回答No.4

条件付き書式で変更された背景色は、 レンジ.Interior.Color では取得できません。 レンジ.DisplayFormat.Interior.Color で取得します。

  • bunjii
  • ベストアンサー率43% (3589/8249)
回答No.3

>COUNTIFS()、これを使用してもカウントしませんでした。 カッコ内の範囲と条件を提示して頂ければ添削できると思います。 尚、模擬データを提示して頂ければ他の方法もアドバイスできます。

genesis50
質問者

補足

=COUNTIFS(C2:G8, ????) 緑色で書式設定された、セル数をカウントしたのですが、緑色セルの検索条件はどのように設定するれば良いでしょうか? 実際は緑色に配色された対象セル数が、他の方法でも良いでの単純に済ますことはできますでしょうか

  • bunjii
  • ベストアンサー率43% (3589/8249)
回答No.2

条件付き書式で塗りつぶしたセルをカウントするのでしたら、その条件でカウントすれば良いと思います。 Excelの組み込み関数にCOUNTIFS関数があるので簡単に計数できるでしょう。 =COUNTIFS([範囲1],[条件1],[範囲2],[条件2]) 尚、[範囲1],[条件1],・・・,[範囲n],[条件n]はANDで判定されます。 ColorCount()関数はVBAの関数ですよね? この関数は条件付き書式で塗りつぶしたセルを検出できないのではないでしょうか?(未確認)

genesis50
質問者

補足

COUNTIFS()、これを使用してもカウントしませんでした。

回答No.1

VBAを使えば、すっきりかもしれない。昔を思い出しながら、ちょっとやってみた。2個とカウントできた。 単純なソースコードは、 Function セル色(y, x) セル色 = Cells(y, x).Interior.Color End Function Sub 色探し() c = 0 For y = 1 To 10 If セル色(y, 2) = 5287936 Then c = c + 1 Next Cells(1, 3) = c End Sub であった。 そのサブルーチンを実行したときのアクティブセルの列の緑をカウントするというようにソースコードを改善できそうな気がする。

関連するQ&A