質問: excelのcountif関数で、『範囲=色のついたセル』に設定したいです。 excelのcountif関数で、『範囲』の設定で、『ある一定の範囲内の色のついたセル』を 範囲として選択したい場合、どのように操作したらよいでしょうか? たとえば、a1~a30までのセルの中で、a9、a10、a18、a19、a20、a29、a30のセルが赤で、 そのうちのa10、a18、a29、a30に「○」の記号が入っていて、その○の数を調べたい場合です。 ご存知の方、よろしくお願いいたします。
回答: ワークシート関数ではセルの「色番号」は取得できません。 マクロ(ユーザ定義関数)が必要です。 ユーザ定義関数で「背景色が赤で、文字列が○のセル」を数えることも可能ですが、質問は「例えば」で書かれていそうなので、あまりきっちりとマクロを書くと修正が必要になりそうです。 そこで汎用的に使えそうな「手抜きバージョン」で回答します。 まず以下のマクロを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)