• ベストアンサー

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

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

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

こんにちは。 ユーザー定義関数で作ってみました。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) とすれば、文字の色を数えます。

sakura445
質問者

お礼

ありがとうございます。 早速やってみました。これは便利ですね。 基本的な質問で申し訳ございませんが、 教えてください。 表の複数列を選択した場合の式は =ColorCellCount(A1:B5, 1 )             ↑ ここに何を入れればよいのでしょうか? 例えばA3の色をカウントしたい時は・・・ A列   B列 色なし 色なし 色なし 色なし 色付き 色付き 色付き 色なし 色なし  色付き

その他の回答 (4)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.5

こんにちは。 >表の複数列を選択した場合の式は >=ColorCellCount(A1:B5, 1 ) >            ↑ >ここに何を入れればよいのでしょうか? A列   B列 色なし 色なし ←1 色なし 色なし 色付き 色付き ←2 色付き 色なし 色なし  色付き ←2 (もし色が違えば、3になります) =ColorCellCount(A1:B5, 1 )            ↑ これは、色を取得していった順番です。 色番号とか指定する方法は、結構面倒だったわけですからね。これは、今まで、他に考えた人がないので、ユニークだと思っています。(^^Y

sakura445
質問者

お礼

Wendy02さん、すごい! ありがとうございました。できました! Wendy02さんの様にPCが使いこなせたら怖いものなしですね。とても楽しそう♪ また、考えても、調べても分からない事があったら質問させていただくかもしれません。その時はどうぞよろしくお願いいたします。 この度はご丁寧に教えていただきありがとうございました。

  • dac203
  • ベストアンサー率43% (92/212)
回答No.3

色情報を取得する関数は見当たりませんねぇ(--)。ユーザ定義関数を作れば出来るそうっすよ。 ttp://hp.vector.co.jp/authors/VA016119/hajimete/udf1.html

sakura445
質問者

お礼

便利なページを教えた頂きありがとうございました。 しっかり勉強してみます! この度はありがとうございました。

回答No.2

色のついたセルの個数を数える関数はないと思います。 しかし、以下の方法で、数えることができます。 なお、セル範囲をA1:A100と仮定します。 B1をアクティブセルとして、B1:B10を選択します。 [挿入]-[名前]-[定義]で、[名前]に「color」、 [参照範囲]に「=GET.CELL(63,A1)」と入力して、[OK]。 B1をアクティブセルとして、B1:B10を選択した状態で、 「=color」を入力して、[Ctrl]+[Enter]。 (B1:B10に「=color」が一括入力され、数値が表示されるハズです。) 適当なセルに「=COUNTIF(B1:B10,"<>0")」と入力して、[Enter]。 色のついたセルの個数が表示されます。

sakura445
質問者

お礼

ご回答ありがとうございます。 教えて頂いたとおりにやってみたつもりなのですが、エラーがでてしまいどうも上手くいきません・・・。 せっかく教えていただいたのに、私の勉強不足で申し訳ありません。 この度はありがとうございました。

  • keirika
  • ベストアンサー率42% (279/658)
回答No.1

回答にはならないかもしれませんが 1.メニューバーの編集の置換を選択 2.オプションが表示されていなければオプションボタンをクリック 3.検索文字列の書式→『セルから書式を選択』で塗りつぶしのあるセルを選択 4.置換文字列に1(半角)を入力し、すべて置換をクリック 5.COUNT関数を使って集計

sakura445
質問者

お礼

早速のご回答をありがとうございます。 セル内に文字や数字を入れずに数えられたら一番良いのですが・・・。 ですが、とても役に立つやり方を教えていただき感謝いたします。ありがとうございました。

関連するQ&A