これからの季節に親子でハイキング! >>

表の集計で、【セルの色を塗りつぶして区別したデータの個数】を、カウントする方法を教えて下さい。

事例ですが、飲食店の月間の宴会データ作成で、売上・客数・組数など集計表に数値で表示されているものは、SUM、COUNT関数で求めています。

質問は、【送迎付きの宴会】データがあり、集計表に数値ではなく【セルの塗りつぶし】で記録されています。目視で数えるのがめんどくさいため、この塗りつぶしの個数をカウントする良い方法がありましたら教えて下さい。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

マクロを使わない限り関数で色を指定してセルの数を数えることはできません。

次のようにしてはどうでしょう。
Ctrlキーを押しながらFキーを押します。
「検索」のタブで「検索する文字列」は空白のままで「書式」をクリックします。
「パターン」タブでセルの色を選択しOKします。
元の画面で「すべて検索」をクリックすれば下方にどのセルがその色になっているかが表示されると同時に一番下の枠部分には例えば「3セルが見つかりました」のように表示されます。それが答えとなりますね。
このような操作をマクロの記録で取ることでマクロの操作からセルの数を数えることもできるようになるでしょう。
    • good
    • 7
この回答へのお礼

お礼が遅くなり申し訳ありません
マクロが必要と知りませんでした。でもマクロのやり方も知らないので今後勉強していきたいと思います。
アドバイスいただいたやり方ですぐにできました。
助かりました。
ご協力ありがとうございました。

お礼日時:2010/02/11 11:17

Excel2007でしたら、オートフィルタで「色フィルタ」が使えて、結果がステータスバーに表示されるため、目視カウントよりは正確かつ手軽だと思います。

    • good
    • 8
この回答へのお礼

お礼が遅くなり申し訳ありません
オートフィルタ知りませんでした
この機能でできることを今まで、目視や苦手な関数に頼ってやっていました
これは便利です
どうもありがとうございました

お礼日時:2010/02/11 11:25

このQ&Aに関連する人気のQ&A

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

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qエクセル・・色の着いたセルの個数を数える関数はある?

エクセルの表内で塗りつぶしされているセルだけを数える様な関数はありますか?
セルには文字や数値は入力されておらず、塗りつぶしているだけです。
よろしくお願いいたします。

Aベストアンサー

こんにちは。

ユーザー定義関数で作ってみました。Ver4 マクロ関数で十分だと私は思いますが、Ver 4 マクロ関数ではケシカランというような方?は、以下のようなVBAでの解決方法が便利かなって思います。

VB Editor の標準モジュールに貼り付けてください。(挿入-標準モジュール)

なお、一般のブックの標準モジュールのユーザー定義関数に、Public キーワードをつけたところで、グローバル関数になるわけではありませんので、もしその点に不安のある方は、マニュアル等で、確認されたほうがよいかもしれませんね。

なお、以下は、引数のインデックスに0を入れると、配列出力するようにしてあります。

'------------------------------------
Function ColorCellCount(範囲 As Range, Optional インデックス As Integer = 1, Optional パターン As Integer = 0)
  Dim myRng As Range
  Dim myIndex As Integer
  Dim myPattern As Integer
  Dim myColor() As Integer
  Dim Ret() As Double
  Dim c As Range
  Dim i As Long
  Dim j As Long
  Set myRng = 範囲
  myIndex = インデックス
  myPattern = パターン
For Each c In myRng
   On Error Resume Next
   If myPattern = 0 Then
     i = WorksheetFunction.Match(c.Interior.ColorIndex, myColor, 0)
   Else
     i = WorksheetFunction.Match(c.Font.ColorIndex, myColor, 0)
   End If
   If i = 0 Then
     ReDim Preserve myColor(j)
     ReDim Preserve Ret(j)
      If myPattern = 0 Then
       myColor(j) = c.Interior.ColorIndex
      Else
       myColor(j) = c.Font.ColorIndex
      End If
      Ret(j) = 1
     j = j + 1
     On Error GoTo 0
     Else
      Ret(i - 1) = Ret(i - 1) + 1
   End If
  Next
  If myIndex <= 0 Then
   ColorCellCount = Ret()
  ElseIf myIndex > UBound(Ret) + 1 Then
   ColorCellCount = Ret(UBound(Ret()))
   Else
   ColorCellCount = Ret(myIndex - 1)
  End If
  Set myRng = Nothing
End Function

ワークシート上での使い方は、

A列
色付き
色なし
色なし
色付き
色付き

=ColorCellCount(A1:A5, 1 )

とすれば、上から数えて、1番目の色のセルの数が出ます。

=ColorCellCount(A1:A5, 2 )
を入れれば、色なしのセルの数が出ます。

=SUMPRODUCT(ColorCellCount(A1:A5, 0 ))

とすれば、全部の合計が出ます。

なお、
=ColorCellCount(A1:A5,1,1)

とすれば、文字の色を数えます。

こんにちは。

ユーザー定義関数で作ってみました。Ver4 マクロ関数で十分だと私は思いますが、Ver 4 マクロ関数ではケシカランというような方?は、以下のようなVBAでの解決方法が便利かなって思います。

VB Editor の標準モジュールに貼り付けてください。(挿入-標準モジュール)

なお、一般のブックの標準モジュールのユーザー定義関数に、Public キーワードをつけたところで、グローバル関数になるわけではありませんので、もしその点に不安のある方は、マニュアル等で、確認されたほうがよいかもし...続きを読む

Q【Excel】 色の一致するセル数をカウントしたい。

こんにちは。

ある条件にあてはまるセルに、書式でセルの色を設定してあります。
いくつかの条件で色分けしてあるのですが、これらのセルの色が「赤」は幾つ、「青」は幾つというふうに、
カウントすることは出来るのでしょうか。

よろしくお願いいたします。

Aベストアンサー

繰り返し何度も出てくる質問です。関数でと考えているなら、直接はできません。
VBAで中身たった1行のユーザー関数を作ればできます。
http://hp.vector.co.jp/authors/VA016119/hajimete/udf1.html
など
Googleで「エクセル セル 色 カウント」などで照会すると似た質問が出る。
http://oshiete1.goo.ne.jp/kotaeru.php3?q=1225959
にはCELL関数のことも載っているが、旧いバージョンの関数なので
私は、除外して言ってます。

Q背景色のカウント方法

いつもお世話になります。
Win7 Excell2010 です。

背景色のついたセルを関数でカウントしたく色々と調べました。
マクロでは知識不足の私なのでなんとか関数でと思ったのですができないようです。
何かいい方法で関数ではやはり無理でしよう

カウントするには関数か若しくはVBAでご指導仰ぎたいです。
私としては申し訳ないですが知識がなく是非ご協力いただけないでしょうか。

お願いは、例えば
B7 ~ B17 で “青色” B125=1
C7 ~ C17 で “青色” C125=2
D7 ~ D17 で “赤色” D125=1
 のようにカウントができればいいです。

よろしくお願いします。

Aベストアンサー

こんばんは!

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

こんばんは!

7~17行目の色付けは手作業でしょうか?それとも条件付き書式によって色付けされているのでしょうか?
Excel2010以降であれば、
条件付き書式で色付けされているセルが判断できる「DisplayFormatオブジェクト」が使えます。

一例です。
A列の124行目以降のセルを検索したい色にあらかじめ塗りつぶしておいてください。

Sheetモジュールです。
尚、1行目は何らかのデータが入っているという前提です。
(A列の最終行を取得するために、ダミーでもよいので1行目に何らかのデータが必要です)

まず...続きを読む

Qエクセル ある条件でセルの塗りつぶし。

エクセルを勉強中の初心者です。
あるセルに数値がある場合に、隣の空白セルを特定の色で塗りつぶしたい。

例えば黄色に塗りつぶした空白セルをコピーして他のセルに貼り付けると、貼り付けたセルは黄色になります。

やりたいことは、B2に数値がある場合にC2を塗りつぶしたいので、次のようにやってみました。

予め空白のE1を黄色にしておく。
C2に以下の式を入れましたが、黄色のE1を貼り付けることにはなりませんでした。
=IF(B2="","",E1)

関数式はあくまでも数値を扱うもので、根本的に間違っていたようです。

ある条件であるセルを塗りつぶすにはどうすればよろしいでしょうか?
よろしくお願いします。

Aベストアンサー

こんばんは!

数式によって「書式」は表示できませんので、
今回の質問の場合には「条件付き書式」を使います。

お使いのExcelのバージョンが判りませんが・・・

Excel2007以降の場合は
C2セルを選択 → ホーム → 条件付き書式 → 新しいルール → 「数式を使用して・・・」を選択 → 数式欄に
=B2<>""
という数式を入れ → 書式 → 「塗りつぶし」 → 好みの色(黄色)を選択しOK

Excel2003以前の場合
C2セルを選択 → メニュー → 書式 → 条件付き書式 → 「数式が」を選択 → 数式欄に
=B2<>""
とし → 書式 → パターン → 好みの色を選択しOK

これで大丈夫だと思います。m(_ _)m

Q色が付いたセルの合計を出したいのですが…

いつもお世話になります。

エクセル2002を使用していますが、特定の色が付いたセルの個数を数えたいのです。
同時に「色が付いてあるセルを数える」に加えて、「色を付けたら直後、そのセルの個数が数えられる」ようにしたいのです。
「色が付いたセルの引数を数える」というのは分かるのですが、「セルだけの合計」となると分かりません…。

以前にも質問しましたが、結局分からず終いでしたので、改めてお願い致します。

例題)A1~G1を赤で色付けした時に、赤色の付いたセルの個数をA2に出す。
理想とする結果) A2に赤色のセルの合計「7」が出た。

Aベストアンサー

ユーザー定義関数による方法です。

一般の関数のような使い方で、指定した色のセル数をカウント出来ます。
色を変更し、<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

ユーザー定義関数による方法です。

一般の関数のような使い方で、指定した色のセル数をカウント出来ます。
色を変更し、<Enter>等で他のセルに移動した時点で再計算します。

書式: CCount(範囲,色番号(カラーインデックス))
使用例 : CCount(A1:A100,3)   A1:A100範囲の赤色をカウント
(赤=3 ですが、他の色の番号を知るには、後述の GetIndx関数で調べられます。)

これで良かったら、詳しく操作手順を書きますので、新しいブックでテストして
みてください。

VBAコード設定方法
1.Alt +...続きを読む

Q塗りつぶしたセルをカウントする関数(エクセル)

エクセルを使っている者です。
エクセルを使って、文化祭のシフト表を作っているのですが、
その作業のなかで、セルを何色か使って塗りつぶし、色別に仕事内容を見やすくしました。(行:時間 列:人の名前)
そこまではいいんですが、みな平等に仕事を割り当てるため、選択した範囲内で塗りつぶされたセルの個数を色別に数えたいのです。
どんな関数を使えばよいでしょうか?
塗りつぶされたセルを、しかも色別にカウントする、そんな関数はあるのでしょうか?

Aベストアンサー

ユーザー定義関数を使った一例です。

<以下を標準モジュールに記入>
Function IntColor(ByVal argRng As Range) As Integer
  '指定したセル(第1引数)の塗りつぶし色を返す関数
  Application.Volatile
  IntColor = argRng.Cells(1, 1).Interior.ColorIndex
End Function

Function CountIntColor(ByVal argRng As Range, ByVal argIntColor As Integer) As Long
  '指定した範囲(第1引数)で指定した塗りつぶし色(第2引数)のセル個数を返す関数
  Dim myCell As Range

  Application.Volatile

  CountIntColor = 0
  For Each myCell In argRng
    If myCell.Interior.ColorIndex = argIntColor Then
      CountIntColor = CountIntColor + 1
    End If
  Next myCell

  Set myCell = Nothing
End Function


<使い方>
A1:A10の範囲でA1と同じ塗りつぶし色のセルが何個あるか?
=CountIntColor(A1:A20,IntColor(A1))

ユーザー定義関数を使った一例です。

<以下を標準モジュールに記入>
Function IntColor(ByVal argRng As Range) As Integer
  '指定したセル(第1引数)の塗りつぶし色を返す関数
  Application.Volatile
  IntColor = argRng.Cells(1, 1).Interior.ColorIndex
End Function

Function CountIntColor(ByVal argRng As Range, ByVal argIntColor As Integer) As Long
  '指定した範囲(第1引数)で指定した塗りつぶし色(第2引数)のセル個数を返す関数
  Dim myCell As Range

 ...続きを読む

Q(EXCEL)CELLの色をカウントする。

エクセルの関数で、CELLの色パターンを数えたりできるのでしょうか。例.セルのパターンが赤色のものをカウントするなど。

Aベストアンサー

#1さんの方法が本道だと思いますが、
「なぜ、そのセルを赤にしたのか?」を判定条件にしたらCOUNTIF関数等でもカウントできませんか?

QEXCELで、色つきセルだけカウントしたい

エクセルで「条件付書式」を使って、セルに色がつけてあります。
その色が付いたものだけを、カウントして、件数を表示させたいのです。色つきセルが、3個なら、別のセルに、3というぐあいに…可能でしょうか?

Aベストアンサー

#02です
それでは折衷案で、シートの条件付き書式が設定してあるセルの値が「ある値」と同じ場合にカウントするのではどうですか?

シートを一旦保存した後で、以下のマクロを「シート名右クリック」→「コードの表示」で開く画面に貼り付けてください。その後すぐに3行目、4行目のセルアドレスを実際のシートに合わせて変更してください。(サンプルではA4,A5としています)

Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Range, clCount As Long
Const trgADRS As String = "A4" '「ある値」のセルアドレス
Const setADRS As String = "A5" '結果を格納するセルアドレス
 For Each c In ActiveSheet.Cells.SpecialCells(xlCellTypeAllFormatConditions)
  If c.Value = Range(trgADRS).Value Then
   clCount = clCount + 1
  End If
 Next
 Range(setADRS) = clCount
End Sub

シートに戻ってどこかのセルの値が変わったタイミングで結果が表示されます。

#02です
それでは折衷案で、シートの条件付き書式が設定してあるセルの値が「ある値」と同じ場合にカウントするのではどうですか?

シートを一旦保存した後で、以下のマクロを「シート名右クリック」→「コードの表示」で開く画面に貼り付けてください。その後すぐに3行目、4行目のセルアドレスを実際のシートに合わせて変更してください。(サンプルではA4,A5としています)

Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Range, clCount As Long
Const trgADRS As String = "A4" ...続きを読む

Qエクセルで塗りつぶし別の合計を出す関数

エクセルで塗りつぶし別(又はフォントの色別)に入力されている数字の合計を出す関数ありますでしょうか?CONTAも同様に
お願いします。

Aベストアンサー

こんにちは。

基本的にExcelでは色を基準にした計算などは出来ません。

色を基準にするの0ではなく数値や文字で処理するようにしてください。

ただこれだと回答になりませんのであまりオススメしませんが方法を紹介します。

その方法は、4.0マクロ関数を使う方法です。
この関数は古いExcelのバージョンで使われていた関数で、97以降のバージョンだとヘルプが無く、いつ使えなくなるか分からないものです。

使い方は参考URLをどうぞ

参考URL:http://www2.odn.ne.jp/excel/waza/name.html#SEC23

Qエクセルでの指定文字 カウントについて

エクセルで並んだデータでの指定した名前だけの個数をカウントするにはどうすればいいのでしょうか?

山田 高橋 佐藤
高橋 梅田 赤田
 西 山田 梅田
佐藤 山田 梅田

名前が並んだデータで「高橋」という名前が何個あるのかをカウントしたいのですがどうすればいいのでしょうか?

Aベストアンサー

 データは入力されているセルの範囲を「A1:C4」とすれば、

=COUNTIF(A1:C4,"高橋")


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

人気Q&Aランキング