- ベストアンサー
エクセル・・色の着いたセルの個数を数える関数はある?
エクセルの表内で塗りつぶしされているセルだけを数える様な関数はありますか? セルには文字や数値は入力されておらず、塗りつぶしているだけです。 よろしくお願いいたします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 ユーザー定義関数で作ってみました。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) とすれば、文字の色を数えます。
その他の回答 (4)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 >表の複数列を選択した場合の式は >=ColorCellCount(A1:B5, 1 ) > ↑ >ここに何を入れればよいのでしょうか? A列 B列 色なし 色なし ←1 色なし 色なし 色付き 色付き ←2 色付き 色なし 色なし 色付き ←2 (もし色が違えば、3になります) =ColorCellCount(A1:B5, 1 ) ↑ これは、色を取得していった順番です。 色番号とか指定する方法は、結構面倒だったわけですからね。これは、今まで、他に考えた人がないので、ユニークだと思っています。(^^Y
お礼
Wendy02さん、すごい! ありがとうございました。できました! Wendy02さんの様にPCが使いこなせたら怖いものなしですね。とても楽しそう♪ また、考えても、調べても分からない事があったら質問させていただくかもしれません。その時はどうぞよろしくお願いいたします。 この度はご丁寧に教えていただきありがとうございました。
- dac203
- ベストアンサー率43% (92/212)
色情報を取得する関数は見当たりませんねぇ(--)。ユーザ定義関数を作れば出来るそうっすよ。 ttp://hp.vector.co.jp/authors/VA016119/hajimete/udf1.html
お礼
便利なページを教えた頂きありがとうございました。 しっかり勉強してみます! この度はありがとうございました。
- shikisaito
- ベストアンサー率52% (257/491)
色のついたセルの個数を数える関数はないと思います。 しかし、以下の方法で、数えることができます。 なお、セル範囲を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]。 色のついたセルの個数が表示されます。
お礼
ご回答ありがとうございます。 教えて頂いたとおりにやってみたつもりなのですが、エラーがでてしまいどうも上手くいきません・・・。 せっかく教えていただいたのに、私の勉強不足で申し訳ありません。 この度はありがとうございました。
- keirika
- ベストアンサー率42% (279/658)
回答にはならないかもしれませんが 1.メニューバーの編集の置換を選択 2.オプションが表示されていなければオプションボタンをクリック 3.検索文字列の書式→『セルから書式を選択』で塗りつぶしのあるセルを選択 4.置換文字列に1(半角)を入力し、すべて置換をクリック 5.COUNT関数を使って集計
お礼
早速のご回答をありがとうございます。 セル内に文字や数字を入れずに数えられたら一番良いのですが・・・。 ですが、とても役に立つやり方を教えていただき感謝いたします。ありがとうございました。
お礼
ありがとうございます。 早速やってみました。これは便利ですね。 基本的な質問で申し訳ございませんが、 教えてください。 表の複数列を選択した場合の式は =ColorCellCount(A1:B5, 1 ) ↑ ここに何を入れればよいのでしょうか? 例えばA3の色をカウントしたい時は・・・ A列 B列 色なし 色なし 色なし 色なし 色付き 色付き 色付き 色なし 色なし 色付き