いちばん失敗した人決定戦

こんにちは。
エクセルのデーター表を作成しフィルターで集計をしています。
色を付けたセルのカウント(条件付き書式ではない)をする定義をVBAにて下記のように作成しました。
これをフィルターに対応させるにはどうすればよいでしょうか?(表示している色つきセルだけをカウントする)

Function ColorCount(R1 As Range, C As Range)
  Dim r As Range

  Application.Volatile
  ColorCount = 0

  For Each r In R1
    If r.Interior.Color = C.Interior.Color Then
      ColorCount = ColorCount + 1
    End If
  Next r

End Function

VBAは詳しくわかりません。
どなたかご指導お願いいたします。
エクセル2013を使用しております。

A 回答 (1件)

こんばんは。



こんな感じでしょうか。
私は、Application.Volatile は使いません。使わなくても同じですから。
それから、ユーザー定義関数の代わりに、変数を置きました。
理由としては、基本的に、こうした関数の出力はVariant 型ですが、カウントはLong型がよいので、2つに分けました。

'//
Function ColorCount(R1 As Range, C As Range)
 Dim r As Range
 Dim cnt As Long
 For Each r In R1
  If r.Interior.Color = C.Interior.Color Then
   If r.EntireRow.Hidden = False Then
    cnt = cnt + 1
   End If
  End If
 Next r
 ColorCount = cnt
End Function
    • good
    • 1
この回答へのお礼

windfaller様

いけましたー!!
ありがとうございます、助かりました。

お礼日時:2018/10/17 14:24

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