• ベストアンサー

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

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

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

  • ベストアンサー
  • 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

  • エクセル関数 セルの個数

    A列に空白セルと文字列が入力されています。 文字列が入っているセルだけをフィルタで抽出しました。 その抽出されたセルが何行あるか個数を出す関数はありませんか?

  • エクセル2010で二つのセルを一つにまとめる関数

    エクセル2010を使っています。 二つのセルに入っているそれぞれの数値を、1つのセルに文字のようにまとめたいです。 例えば、 B2に3、C2に4、なら、D2に34、です。 ただ、 B3に数値が入っていて(例えば5)、C3が空白なら、D3は、B3の数値(5) としたいです。 これらの条件を満たす、D列にいれる関数を教えてください。 どうぞよろしくお願いします。

  • エクセル2007関数について

    エクセル2007関数について セルAT22に「採用」の文字を入力するとセルAB24、AH24 の入力数値をF39(AB24)、F40(AH24)各々にコピーしたい のですが、関数を教えてください。

  • エクセル 文字データのセル個数を数えるには?

    エクセルで、データの入ったセルを数えるのに、COUNT関数を使っていますが、数値データしか、数える対照としません。人名などの文字データの入ったセル個数を数えるには、どうすればよいでしょうか。

  • エクセル 2003 関数

    エクセル 2003 関数 お世話様です。 XPのエクセル2003にてセルA1に数値の3を入れております。 これをセルC5の文字間に関数値として挿入する事は可能でしょうか? 例: セルA1に数字の3、セルC5に【カウントです。】と入力されていたら    【カウント3です。】となります。 セルA1の数値によってセルC5の入力内容が変わるようにしたいのですが 可能でしょうか? お手数ですが、ご存知の方がいましたらご教授下さい。 以上、何卒宜しくお願い致します。

  • Excel セル内の文字だけを取り出すには

    Excelの1つのセルに 01234 ABCDEFG のように、「数字5つ(固定)+半角スペース+(任意の数の)文字」 が入力されています。数値は必ず5桁と決まっていますが、 文字列の数はさまざまです。 関数で文字の部分だけ、別のセルに取り出したいのですが、 どの関数を使うとできますか?教えて下さい。 よろしくお願いします。

  • エクセル関数のセル参照方法

    エクセル関数のセル参照で、あるセルに入力した数値を、参照するセルの行番号として使いたいのですがどうしたらよいのでしょうか? VBAではそのような方法があったと思うのですが、関数で処理する方法はあるのでしょうか? たとえば、 =SUM(C5:C*) のような関数で「*」を他のセルに入力して参照させることは可能でしょうか? よろしくお願いいたします。

  • エクセル関数に関して

    エクセルの関数に関して教えてください。 添付画像のように【セル1】と【セル2】の入力結果に応じて【セル3】に数値として答えを出すには、どの関数を使用すれば可能ですか?

  • エクセルの関数について

    エクセルについて質問です。 「ある数値を入力したら常に一定の文字列を表示する」にはどの関数がいちばん便利でしょうか? 例:セルA1に101を入力→B1に「りんご」を表示 セルA2に201を入力→B2に「みかん」を表示 のように全部で50程度の数値&文字列の組み合わせ(コード表)を 判別したいと思っています。 よろしくお願いします。

  • Excelの関数?で困っています。

    Excelの関数?で困っています。 こんにちは。Excel2007を使用しています。 セルの中にある特定の文字が含まれている場合は、ある文字の後ろの数値を抽出するということはできますか? 例えば、セルA1に『AA-11 $100.00』、A2に『BB $ 95.00』と入力されている場合、『AAという文字が含まれている場合はB1に$マークの後ろの数値を抽出、BBという文字が含まれている場合はC1に$マークの後ろの数値を抽出する』というものを関数などを使用して作ることはできるのでしょうか? もしできるのであれば、ぜひご教示ください。 宜しくお願いします。

専門家に質問してみよう