dポイントプレゼントキャンペーン実施中!

塗りつぶしたセルをカウントする関数…どなたかご存知ですか?是非、教えてください!!

A 回答 (3件)

> 塗りつぶしたセルをカウントする関数…どなたかご存知ですか?



組込みの関数で、このような関数は、ありません。

無いときは、ユーザー定義関数として作ります。

例えば、CCount関数で、使い方は、こんな感じです。
書式 : CCount(範囲)
使用例: CCount(A1:B10)  A1:B10の範囲で塗り潰しセル数をカウントします。
(色の種類を指定してカンウトもできますが、ここでは種類は識別しません。)

一応、関数設定方法の手順を詳細に書いておきます。

1.Alt + F11 で VBE(Visual Basic Editor)を開きます。
2.VBE のメニューから[挿入] -->[標準モジュール] を指定します。
3.モジュールウィンドウに下記コード(9行)をコピーして貼り付けます。
4.Alt + Q (または、右上隅の×)でウィンドウを閉じ、シートに戻ります。
5.これで関数は、使用出来ます。

Function CCount(Rng As Range)
Dim R As Range
Dim Cnt As Long
Application.Volatile
For Each R In Rng
  If R.Interior.ColorIndex <> xlNone Then Cnt = Cnt + 1
Next R
CCount = Cnt
End Function

この関数を使用した場合、着色または無色に変更した場合に、セル値の変更と
違い再計算の対象になりません。
色を設定した場合、F9キーを押すなどで再計算しないと値が変更されません。

そこで、いちいち F9を押すのが面倒な場合は、次の手順で操作してください。
これによって、アクティブセルを移動した時点で、正しい値を表示します。

操作手順:
1. 使用しているシートのシート名タブを右クリックして「コードの表示」を
 指定します。
2. 開いたコードウィンドウに下記コードをコピーして貼り付けます。
3. Alt+ Q (または、右上隅の×)でウィンドウを閉じ、シートに戻ります。
4. 以上で設定完了です。 

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  Calculate
End Sub
    • good
    • 1
この回答へのお礼

ウムム、とても専門的で凄いです!!
兎にも角にも、試してみたいと思います。
有難うございました!!

お礼日時:2003/07/17 15:03

#1です。

失礼しました、ちょっと訂正です。

Function CellColor(myRange As Range)
  Dim c As Range, i As Long
  For Each c In myRange
    If c.Interior.ColorIndex <> xlNone Then
      i = i + 1
    End If
  Next c
  CellColor = i
End Function
    • good
    • 0
この回答へのお礼

わざわざのご訂正、有難うございました!!

お礼日時:2003/07/17 15:09

ユーザー定義関数になりますが、こんなのでどうでしょう。



Function CellColor(myRange As Range)
  Dim c As ragne, i As Long
  For Each c In myRange
    If c.Interior.ColorIndex <> xlNone Then
      i = i + 1
    End If
  Next c
  CellColor = i
End Function
    • good
    • 0
この回答へのお礼

ウムム、何だか難しそうですが試してみます。
有難うございました!!

お礼日時:2003/07/17 15:01

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