- ベストアンサー
セルの着色を認識する関数ってあるんでしょうか?
こんにちはtmgmです。 Excelについての質問です。 色がついているセルの数をカウントして そのセル数を出す っていうことがしたいんですが、 いまいちどう関数を記述していいのかわかりません。 ------------------------------------------------ 例:A1,A2,A3,A4,A5のセルのうち、赤で塗りつぶしてあるセルの数を数えて、その数をB1セルに出す ------------------------------------------------ 何かよいやり方をお分かりの方いらっしゃいますでしょうか? ご返答よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
ユーザー定義関数による方法です。 一般の関数のような使い方で、指定した色のセル数をカウント出来ます。 色を変更し、<Enter>等で他のセルに移動した時点で再計算します。 書式: CCount(範囲,色番号(カラーインデックス)) 使用例 : CCount(A1:A100,3) A1:A100範囲の赤色をカウント (赤=3 ですが、他の色の番号を知るには、後述のGetIndx関数で調べられます。) これで良かったら、詳しく操作手順を書きますので、新しいブックでテストして みてください。 VBAコード設定方法 1.Alt + F11 で VBE(Visual Basic Editor)を開きます。 2.VBE のメニューから[挿入] -->[標準モジュール] を指定します。 3.モジュールウィンドウに下記コードをコピーして貼り付けます。 4.Alt + Q (または、右上隅の×)でウィンドウを閉じ、シートに戻ります。 5.メニューから[ツール]-->[マクロ]-->[セキュリティ]で「セキュリティレベル」を 「中」にして[OK]します。 Function CCount(Rng As Range, idx) Dim R As Range Dim Cnt As Long Application.Volatile For Each R In Rng If R.Interior.ColorIndex = idx Then Cnt = Cnt + 1 Next R CCount = Cnt End Function Function GetIndx(Rng As Range) If Rng.Count > 1 Then GetIndx = vbNullString Exit Function End If GetIndx = Rng.Interior.ColorIndex End Function '--------------------------------------- ◎ 各色のカラーインデックスを調べる関数(付録) コード後半は、GetIndx関数は、カラーインデックス番号を調べる関数です。 必要なときに使ってみてください。 使い方例: A1をインデックス番号を調べたい色で塗り潰します。 例えば、セルA1を任意の色で塗り潰し、B1に =GetIndx(A1) を入力するとそのカラーインデックス番号が表示されます。 ---------------------------------------- ※ CCount関数を自動再計算に対応させる設定 色を変更しただけでは、再計算されませんので Enter等でセルを移動した時点 で、再計算されるようにします。(シートモジュールに記述) 【 操作手順 】 ・使用しているシートのシート名タブを右クリックして「コードの表示」を 指定します。 ・開いたコードウィンドウに下記コードをコピーして貼り付けます。 ・Alt+ Q (または、右上隅の×)でウィンドウを閉じ、シートに戻ります。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) Calculate End Sub お勧めは、しませんが、こんな方法もあります。 一時的にカウントするなら、簡単でいいかも知れませんが・・・ http://www.moreexcellent.com/excel/tips/color.htm
その他の回答 (2)
- maruru01
- ベストアンサー率51% (1179/2272)
こんにちは。maruru01です。 作業列を使用してもいいなら、以下のページの方法で出来ます。 http://www.moreexcellent.com/excel/tips/color.htm
- hinebot
- ベストアンサー率37% (1123/2963)
残念ながら関数では書式(色)は認識できません。 おっしゃるようなことを実現するには、マクロを作るしかないと思います。 このまま締め切らずにお待ちいただければ、マクロに詳しいどなたかが、作って回答してくれるでしょう。 (申し訳ないですが、私はその方面は詳しくないので、できない、というアドバイスに留めさせていただきますことをお許しください。)
お礼
こんにちはtmgmです。 すごく詳しくてわかりやすい回答、ありがとうございました。 上記の方法でやってみて、イメージどおりにできました。 ありがとうございました。