• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:背景色のカウント方法)

Excelでセルの背景色をカウントする方法

このQ&Aのポイント
  • Excelの関数やVBAを使用して、セルの背景色をカウントする方法を教えてください。
  • 特定の範囲のセルの背景色ごとにカウントし、結果を別のセルに表示したいです。
  • 具体的な例として、B7からB17までの範囲で背景色が「青色」のセルの数を、B125セルに表示する方法を教えてください。

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

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

こんばんは! 7~17行目の色付けは手作業でしょうか?それとも条件付き書式によって色付けされているのでしょうか? Excel2010以降であれば、 条件付き書式で色付けされているセルが判断できる「DisplayFormatオブジェクト」が使えます。 一例です。 A列の124行目以降のセルを検索したい色にあらかじめ塗りつぶしておいてください。 Sheetモジュールです。 尚、1行目は何らかのデータが入っているという前提です。 (A列の最終行を取得するために、ダミーでもよいので1行目に何らかのデータが必要です) まず、手作業で色を付けている場合のコードです Sub 条件付き書式なし() Dim i As Long, j As Long, k As Long, endRow As Long, endCol As Long endRow = ActiveSheet.UsedRange.Rows.Count endCol = Cells(5, Columns.Count).End(xlToLeft).Column If endRow > 123 Then Range(Cells(124, "B"), Cells(endRow, endCol)).ClearContents End If For j = 2 To endCol For i = 124 To endRow For k = 7 To 17 If Cells(k, j).Interior.Color = Cells(i, "A").Interior.Color Then Cells(i, j) = Cells(i, j) + 1 End If Next k Next i Next j Range(Cells(124, "B"), Cells(endRow, endCol)).SpecialCells(xlCellTypeBlanks) = 0 End Sub 次に条件付き書式によってセルが色付けされている場合のコードです。 (内容はほとんど一緒です) Sub 条件付き書式で色付け() Dim i As Long, j As Long, k As Long, endRow As Long, endCol As Long endRow = ActiveSheet.UsedRange.Rows.Count endCol = Cells(5, Columns.Count).End(xlToLeft).Column If endRow > 123 Then Range(Cells(124, "B"), Cells(endRow, endCol)).ClearContents End If For j = 2 To endCol For i = 124 To endRow For k = 7 To 17 If Cells(k, j).DisplayFormat.Interior.Color = Cells(i, "A").Interior.Color Then Cells(i, j) = Cells(i, j) + 1 End If Next k Next i Next j Range(Cells(124, "B"), Cells(endRow, endCol)).SpecialCells(xlCellTypeBlanks) = 0 End Sub ※ 空白セルには「0」を表示するようにしていますが、「0」が目障りであれば 最後の >Range(Cells(124, "B"), Cells(endRow, endCol)).SpecialCells(xlCellTypeBlanks) = 0 の1行を削除してください。m(_ _)m

dorasuke
質問者

お礼

2つの方法の御教示をいただきありがとうございました。 お礼が遅くなり申し訳ありませんでした。 作業をする人たちに聞いて、 下記の方法を採用させていただきました。 「手作業で色を付けている場合のコードです」

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (4)

  • ap_2
  • ベストアンサー率64% (70/109)
回答No.5

回答ふえとる・・・かぶった。関数名まで(苦笑

全文を見る
すると、全ての回答が全文表示されます。
  • ap_2
  • ベストアンサー率64% (70/109)
回答No.4

B124に、=CountColor(B7:B17, A$124) という感じで。 Function CountColor(targetCell, colorCell)  Dim c#, n&, rng  c = colorCell.Interior.color  For Each rng In targetCell   If c = rng.Interior.color Then n = n + 1  Next  CountColor = n End Function

dorasuke
質問者

お礼

御指導いただき感謝しています。 お礼か遅くなり申し訳ありませんでした。

全文を見る
すると、全ての回答が全文表示されます。
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.3

ALT+F11を押す 現れた画面で挿入メニューから標準モジュールを挿入する 現れたシートに下記をコピー貼り付ける public function CountColor(byval Target as excel.range, refcol as excel.range)  dim h as range  application.volatile  for each h in target   if h.interior.color = refcol.interior.color then    countcolor = countcolor + 1   end if  next end function 使い方 B124セルに =countcolor(B$7:B$16,$A124) と記入する 色を塗り直した後は,かならずF9キーなどで明示的に再計算を行わせる #注意 「条件付き書式で発色させた色」は「背景色」では無いので,こういったアプローチではカウントできない。 #参考 別セル(たとえばシートの右の方の並びのセル,あるいはシート2)にセルの塗り色をマクロで,若しくは古いマクロである4.0マクロを用いて書き出させ,それを手がかりにCOUNTIFするような方法でも出来ます。 ネットでget.cellで検索してみれば,4.0マクロを使った方法も多数ヒットするので,いわゆる通常のマクロを使いたくないならご利用になってみては。

dorasuke
質問者

お礼

御回答いただき誠に有難うございました。 上手くできました。 それぞれに頂いたご指導で迷いました。 どれもよくて。 追伸 いつもご指導いただき感謝の気持ちでいっぱいです。 またお礼が遅くなり誠に申し訳ありません。

全文を見る
すると、全ての回答が全文表示されます。
回答No.1

逆に色を塗るのにルールがあれば条件付き書式が使えます。 基礎編と数式編 http://www.becoolusers.com/excel/conditional-formatting.html http://www.becoolusers.com/excel/conditional-formatting-fx.html 参考まで

dorasuke
質問者

お礼

参考のアドレスを提示していただきありがとうございました。 お礼が遅くなり申し訳ありませんでした。

dorasuke
質問者

補足

説明不足でお許しください 条件は特にありません。 見た目でわかりやすくするために色で区分けしているだけです。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 色付きのセルのカウントの方法

    色付きのセルをカウントする方法はあるのでしょうか。 ご存知の方、ご指導お願い致します。 使用機器 Windows 8 Excel 2013 です。 下記のような表中、年齢が80歳になれば赤色(既に関数が入っていて)になります。 赤色のセルをカウントする関数がありましたら、ご指導お願い致します。 合計数を C7に求めたいのです。    A列 B列 C列 1行 NO 氏名 年齢 2行 1    あ    81 3行 2    い  79 4行 3   う   78 5行 4   え     82 6行 5   お    79 7行 合計

  • EXCELLで数字入力分のカウント方法(関数)

    EXCELLで数字入力分のカウント方法(関数)を教えてください。 セルA、B、Cの足し算なら、=SUM(A:B)になると思います。 質問したいのは、セルA、B、Cにある数値が入力されている文のセル数を知る 関数を教えてください。 たとえば、A=1、B=3、C=未入力なら2を知らせる関数が知りたいです。

  • エクセル2012でセル内の背景色をカウントしたい。

    ウィンドウズ7でエクセル2012を使用しています。一定の範囲内の背景色(3色)使用しているセルの 数をカウントしたい。背景色の番号を求め、その背景色番号をVBA等でカウントする方法になるかとは思いますが、いろいろと調べて挑戦したのですがカウントできませんでした。VBAについては無知なので、申し訳ありませんがわかりやすくエクセル2012で作成するVBA等の方法を教えてください。

  • エクセルの入力方法の質問です

    例えば、任意のセル(ここではC5)に、何らかの値(ここでは○)が入力されると、自動的に任意のセル(ここではC5)の横列セル(ここではA5からG5)までの範囲のセルの色が変わる(ここでは赤色)ようにしたいです。VBA・関数・マクロなど、どの方法でどのように設定すればよいですか??

  • カラー番号でカウントするには

    いつもお世話になります。 WIN7 EXCELL2010 です。 下記のマクロと数式にて F4:F7 にカラー番号を示しています。 マクロ Function CellColor(セル) CellColor = セル.Interior.ColorIndex End Function 数式 F4 =CellColor(E4) 御指導を仰ぎたいのは、 F4 : F7 の4つのみのカラー番号(この場合 24/14/40/48)で B2 には 5件 C2 には 2件 と関数でカウントすることは可能でしょうか。 もし可能ならばご教授をいただけないでしょうか。 よろしくお願いします。

  • セルの背景色を数えたいのですが

    Excel2000で、数値や文字が入っているセルの一部に 「背景色」(塗りつぶし色)をつけております。 この中で、範囲指定をして「特定の背景色セル」だけをCountできるような関数はありますでしょうか? また、マクロでしたらどのようにすれば良いのでしょうか? マクロの知識はほとんどありません。 (↓)のカラーパレットの最下段の2色と同じ色を 個別に指定したいと思っております。 □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ ■ □ □ □ ■ □

  • 背景色のカウント方法 その~2

    いつもお世話になります。 Win7 Excell2010 です。 下記で No.2 tom04さんの「手作業で色を付けている場合のコードです」を採用させていただきました。 この時は「カウントした表」は A124:AF127 作成していてうまくいき大成功でした。 その後この表をいつも見る必要がありいちいちスクロールして見るのが面倒で上に移動したいと考えました。 前回の質問アドレス http://okwave.jp/qa/q8444714.html カウントする表は B5:AF8 カウントの対象となるのは B9:AF147 ということから私なりに考えて下記のように変更しました。 Sub 色付きセル() Dim i As Long, j As Long, k As Long, endRow As Long, endCol As Long endRow = ActiveSheet.UsedRange.Rows.Count endCol = Cells(5, Columns.Count).End(xlToLeft).Column If endRow > 147 Then Range(Cells(9, "B"), Cells(147, endCol)).ClearContents End If For j = 2 To endCol For i = 5 To 8 For k = 9 To 147 If Cells(k, j).Interior.Color = Cells(i, "A").Interior.Color Then Cells(i, j) = Cells(i, j) + 1 End If Next k Next i Next j End Sub ところがカウントしてくれるのですが「マクロボタン」をクリックするたびに倍数でカウントされます。 例えば参照図では C6 2 本当は 1 でなければ C7 2 本当は 1 でなければ 私が修正した上記のマクロのどこかに不具合があると思うのですが是非ともご指導いただけませんでしょうか。 よろしくおねがいいたします。 Tom04さんにご指導いただきながら勝手に修正したことをお詫びいたします。 お許しください。

  • VBAで背景色

    以前にも同じような質問をしたのですが、応用できなかったので改めて質問させていただきます。申し訳ありません。 VBAを使って、入力された値によってセルの背景色を変更したいです。 C列からAF列までのセルに 「1」から始まる値が入力されたら背景を黄色 例:「1テスト」 「2」から始まる値が入力されたら背景を緑色 例:「2VBA」 「3」から始まる値が入力されたら背景を水色 例:「3教えて」 「4」から始まる値が入力されたら背景を赤  例:「4終了」 にするVBAが欲しいです。 例えば、C1に入力した「1テスト」という値を、D1~AF1にコピーすれば C1~AF1の背景が黄色になるようにしたいわけです。 かつ、B列にはその行で背景が黄色のセルの数を返せれば最高です。 どの部分が「C列からAF列」を指すのかをご説明いただけると大変ありがたいです。 よろしくお願いします。

  • [マクロ]値に変換しても、空白のセルがカウントされてしまいます。

    式が入っているセルを値に変換し、値が入ってるセルだけをカウントさせたいのですが、もともと式が入っていた空白になっているセルもカウントしてしまいます。 値の変換の仕方が間違っているのでしょうか? それともカウントの仕方が良くないのでしょうか。 値に変換するのは自動記録のマクロを作成しました。 カウントは、COUNTA関数をVBAで使用しています。 空白のセルをカウントさせない方法を教えてください。 マクロ・VBA初心者なので、値に変換するVBAも合わせて教えていただけると勉強になります。 よろしくお願いいたします。

  • エクセルで、セルの塗りつぶし色を判別する関数はあるのでしょうか。アドバイス下さい。

    ●特定の色のセルに入っているデータの合計値を求めたいのです。マクロではなく、セルの中に関数(if...のような関数)を埋め込んで、使いたいのです。 ●質問が長くなるので、具体的なことは省略しますが、例えば、セルD30に、「if(セルB30の塗りつぶし色=赤, B30, C30)」のような関数を入れることは、可能なのか、というのが質問です。 ●この式の意図は、セルA30のデータを見て、セルB30とC30のどちらにあるデータを集計に採用するか(人間が感覚的に)判断して、採用する方を赤で塗りつぶしておくことで、セルD30には赤色セルのデータが入るだろう、ということです。(数値的な判断ができない事情があります) ●これが可能なら、D列の下のほうに「=sum(d1:d50)」と入れれば、B列とC列のうち、赤色セルだけを集計できると思います。

専門家に質問してみよう