- ベストアンサー
可視セルを対象としたcountifができるでしょうか?
オートフィルターで表示してある所だけを対象としてcountifで対象 値の数を出したいのでのですが できますでしょうか? Sub countif() Range("C1") = Application.WorksheetFunction.countif(Range("A:A").SpecialCells(xlCellTypeVisible), Range("B1")) End Sub イメージはこんな感じなのですがよろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
できないようなので、ユーザー定義関数を作ってみました。 しかし、このやり方だと可視セルを一つ一つチェックしていくので とても時間がかかります。 時間短縮のために Range("A:A")をRange("A1").CurrentRegion.Resize(, 1) に変更しています。 Sub test() Dim myRange As Range Set myRange = Range("A1").CurrentRegion.Resize(, 1).SpecialCells(xlCellTypeVisible) ' Set myRange = Range("A:A").SpecialCells(xlCellTypeVisible) Range("C1").Value = myCountIF(myRange, Range("B1").Value) Set myRange = Nothing End Sub Public Function myCountIF(argRng As Range, arg2 As String) As Long Dim myCell As Range Application.Volatile myCountIF = 0 For Each myCell In argRng If myCell.EntireRow.Hidden = False Then myCountIF = myCountIF + Application.WorksheetFunction.countif(myCell, arg2) End If Next Set myCell = Nothing End Function
その他の回答 (2)
- rukuku
- ベストアンサー率42% (401/933)
こんにちは オートフィルタを適用した状態でコピー→他のシート(自ブックでも他ブックでもOK)にペーストしますと、オートフィルタで抽出されたものだけが貼付きます。 このデータをカウントしてはいかがでしょうか?
- KURUMITO
- ベストアンサー率42% (1835/4283)
オートフィルターで抽出した後でさらに表示されているものの中であるものを数えるということでしょうか? オートフィルターで表示されているものを数えるにはSUBTOTAL関数で集計方法を3などにすれば表示されている数を知ることができますがそれではよくないのでしょうか? オートフィルターで抽出したものからさらに抽出をすることの意味がよく理解できません。
お礼
ありがとうございます。 大変参考になりました。 提示していただいたコードを元に作っていきたいと思います。