プロが教える店舗&オフィスのセキュリティ対策術

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

A 回答 (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)

とすれば、文字の色を数えます。
    • good
    • 20
この回答へのお礼

ありがとうございます。
早速やってみました。これは便利ですね。
基本的な質問で申し訳ございませんが、
教えてください。

表の複数列を選択した場合の式は
=ColorCellCount(A1:B5, 1 )
            ↑
ここに何を入れればよいのでしょうか?
例えばA3の色をカウントしたい時は・・・

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

お礼日時:2006/03/02 23:31

こんにちは。



>表の複数列を選択した場合の式は
>=ColorCellCount(A1:B5, 1 )
>            ↑
>ここに何を入れればよいのでしょうか?

A列   B列
色なし 色なし ←1
色なし 色なし
色付き 色付き ←2
色付き 色なし
色なし  色付き ←2 (もし色が違えば、3になります)

=ColorCellCount(A1:B5, 1 )
           ↑
これは、色を取得していった順番です。

色番号とか指定する方法は、結構面倒だったわけですからね。これは、今まで、他に考えた人がないので、ユニークだと思っています。(^^Y
    • good
    • 20
この回答へのお礼

Wendy02さん、すごい!
ありがとうございました。できました!
Wendy02さんの様にPCが使いこなせたら怖いものなしですね。とても楽しそう♪

また、考えても、調べても分からない事があったら質問させていただくかもしれません。その時はどうぞよろしくお願いいたします。

この度はご丁寧に教えていただきありがとうございました。

お礼日時:2006/03/03 22:42

色情報を取得する関数は見当たりませんねぇ(--)。

ユーザ定義関数を作れば出来るそうっすよ。

ttp://hp.vector.co.jp/authors/VA016119/hajimete/udf1.html
    • good
    • 7
この回答へのお礼

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

お礼日時:2006/03/03 00:06

色のついたセルの個数を数える関数はないと思います。



しかし、以下の方法で、数えることができます。
なお、セル範囲を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]。
色のついたセルの個数が表示されます。
    • good
    • 4
この回答へのお礼

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

お礼日時:2006/03/02 23:56

回答にはならないかもしれませんが



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

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

お礼日時:2006/03/02 23:39

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

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