• ベストアンサー

オートフィルタの抽出結果をマクロで表示するには?

A 1000  D 200 A 500 A 1000 B 2000 上表をオートフィルタでA及び1000で絞ると左下に『4レコードで2個です。』と抽出個数が表示されると思いますが、その個数(2個)をマクロを使って表示させるにはどうすればいいでしょうか? マクロの記録でオートフィルタをかけるところまではできるのですが、個数表示で壁にぶち当たっています。 ちなみに1000を検索させて個数を出すという方法もありますが、2行目のデータが他の行にもあるため、データを検索させて個数を導くマクロは作られないので、オートフィルタからのマクロを作成しています。 マクロ初心者のため、分かる方いらっしゃいましたらご教授をお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんばんは。 >2行目のデータが他の行にもあるため、データを検索させて個数を導くマクロは作られないので、 2行目のデータというのは、2列目のデータという意味だと思いますが、検索といっても、ループ型とか、関数型になるのですが、考えるよりもややこしいです。 以下は、あくまでも、AutoFilter の範囲のみであって、AutoFilter が出ていない限りは、値が出てきません。 Columns(2) は、Columns(1) でも構わないのですが、その代わり、Subtotal の第1引数を、3にしました。  If ActiveSheet.AutoFilterMode Then    MsgBox WorksheetFunction.Subtotal(3, Me.AutoFilter.Range.Columns(2)) - 1  End If

dutchdog
質問者

お礼

回答ありがとうございます。 『Me』の意味が分かりませんでしたが、何とか実行できました。 思った結果が出たので大変助かりました。

その他の回答 (2)

回答No.2

VBAは苦手なのですが こんなのはどうでしょう? MsgBox WorksheetFunction.Subtotal(2, Range("B:B"))

dutchdog
質問者

お礼

回答ありがとうございます。 他の方の回答が良かったので、そちらを採用したいともいます。

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

1行目が項目行としたら、 MsgBox Range("A2", Cells(Rows.Count, 1).End(xlUp)).SpecialCells(xlCellTypeVisible).Cells.Count とか?

dutchdog
質問者

お礼

ありがとうございます。 うまく実行できました。