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

オートフィルターで表示してある所だけを対象としてcountifで対象
値の数を出したいのでのですが
できますでしょうか?

Sub countif()
Range("C1") = Application.WorksheetFunction.countif(Range("A:A").SpecialCells(xlCellTypeVisible), Range("B1"))
End Sub

イメージはこんな感じなのですがよろしくお願いします。

A 回答 (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
    • good
    • 0
この回答へのお礼

ありがとうございます。
大変参考になりました。
提示していただいたコードを元に作っていきたいと思います。

お礼日時:2009/09/22 00:31

こんにちは



オートフィルタを適用した状態でコピー→他のシート(自ブックでも他ブックでもOK)にペーストしますと、オートフィルタで抽出されたものだけが貼付きます。

このデータをカウントしてはいかがでしょうか?
    • good
    • 0

オートフィルターで抽出した後でさらに表示されているものの中であるものを数えるということでしょうか?


オートフィルターで表示されているものを数えるにはSUBTOTAL関数で集計方法を3などにすれば表示されている数を知ることができますがそれではよくないのでしょうか?
オートフィルターで抽出したものからさらに抽出をすることの意味がよく理解できません。
    • good
    • 0

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

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


このQ&Aを見た人がよく見るQ&A