アプリ版:「スタンプのみでお礼する」機能のリリースについて

excelのCOUNTIF関数で、『範囲』の設定で、『ある一定の範囲内の色のついたセル』を
範囲として選択したい場合、どのように操作したらよいでしょうか?

たとえば、A1~A30までのセルの中で、A9、A10、A18、A19、A20、A29、A30のセルが赤で、
そのうちのA10、A18、A29、A30に「○」の記号が入っていて、その○の数を調べたい場合です。

ご存知の方、よろしくお願いいたします。

A 回答 (2件)

ワークシート関数ではセルの「色番号」は取得できません。


マクロ(ユーザ定義関数)が必要です。

ユーザ定義関数で「背景色が赤で、文字列が○のセル」を数えることも可能ですが、質問は「例えば」で書かれていそうなので、あまりきっちりとマクロを書くと修正が必要になりそうです。
そこで汎用的に使えそうな「手抜きバージョン」で回答します。

まず以下のマクロをALT+F11でVBE画面を開き、左上のVBA Projectでシート名を右クリックし「挿入」→「標準モジュール」で表示される画面に貼り付けて下さい。

Function Cidx(ByVal trg As Range) As Integer
 With trg.Cells(1, 1).Interior
   If .ColorIndex = xlNone Then
     Cidx = 0
   Else
     Cidx = .ColorIndex
   End If
 End With
End Function

次にVBE画面を閉じてワークシート画面に戻り、
 =Cidx(A1)
の式を1行目の空いている列(例えばB列)に入力し、30行分下にコピーします。するとA列のセルの「色番号」が表示されます(背景色なしは0)
ただしセルに値を入力した後で背景色を変更した場合は、ユーザ定義関数の結果は自動的に変わりません。Alt+Ctrl+F9で強制再計算させる必要がありますのでご注意ください

後は別の関数で赤色(色番号=3)で「○」印があるセルをカウントします
 =SUMPRODUCT((A1:A30="○")*(B1:B30=3)*1)
    • good
    • 11
この回答へのお礼

ご回答ありがとうございます。

普通の関数では難しいのですね。
マクロは、直接書いたことはありませんが、
ご説明いただいたとおり作業すれば私でもできそうです。

今からチャレンジしてみようと思います。
(ご回答いただいたことに気づかず、色のセルをCOUNTIFの足し算で
ながーい関数を作っておりました。)

ご丁寧かつ分かりやすいご説明、ありがとうございました。
助かりました。

お礼日時:2007/10/16 11:11

一般機能の関数で色つきセルを数えることはできません。


マクロでも、セルが単純にパレットで塗りつぶされている場合と条件
付き書式で塗りつぶされている場合とで、処理が異なります。

以下は「単純にパレットで塗りつぶされている」場合です。

まず、標準モジュールに以下を記述します。

Function Cnt(Area As Range)
 Dim rng
 Application.Volatile
 For Each rng In Area
  If rng.Interior.ColorIndex <> xlNone And rng.Value = "○" Then
   Cnt = Cnt + 1
  End If
 Next
End Function

で、答えを表示したいセルに =Cnt(A1:A30) と入力します。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。
関数では難しいのですね。
マクロはあまり使ったことがありませんが、
挑戦したいと思います。
ありがとうございました。

お礼日時:2007/10/16 10:59

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A