人に聞けない痔の悩み、これでスッキリ >>

エクセルVBAで、オートフィルタを使用し、別ブックにフィルタ結果の個数を、反映させる方法を、教え下さい。

例えば、
ブック1:A列に日付け、B列に項目
ブック2:A列に月名、B列に個数
ブック1で4月でフィルタを、かけその結果の数を、ブック2のB2にその結果(4月と入力のある個数)を入力
といったものです。

色々検索しましたが、メッセージボックスに、表示させる方法しか見つかりませんでした、、、、。
どうか、、ご教示お願います!

A 回答 (4件)

メッセージボックスに表示させる方法が分かれば、その値をセルに設定するだけな気がしますが・・・


操作としてはどのタイミングでどの分を設定するのでしょうか?
VBAでオートフィルタとありますが、フィルタ必須ですか?
単純にデータを頭からなめて、月ごとの個数を表示するというわけではないのでしょうか?
どちらにしてもデータを順番に判定し対象月ならカウンタをカウントアップしていき、最終結果をセルに設定する方法でいけますが、そもそもSheet2の方にCOUNTIF関数で自動集計にしておけば結果の設定をコードで書く必要もない気がしますが(笑)
一応コードは記載しておきます
Public Sub Sample
 Dim intR As Integer
 Dim intS As Integer
 Sheet1.Range("$A:$B").AutoFilter Field:=1, Criteria1:="4月"
 intR = 2
 intS = 0
 Do Until Sheet1.Cells(intR, 1).Value = ""
  If Sheet1.Cells(intR, 1).Value = "4月" Then
   intS = intS + 1
  End If
  intR = intR + 1
 Loop
 Sheet2.Cells(2, 3).Value = intS
End Sub
上記は「4月」に固定した場合なので、フィルタ項目が変動する場合にはもう少し手間が必要です
    • good
    • 0

こんにちは



>A列に月名、B列に個数
だけであるなら、わざわざマクロで算出しなくてもCOUNTIF的な算出で良いのでは?

例えば4月の個数を求めるなら
 =SUMPRODUCT((MONTH(日付のセル範囲)=4)*1)
みたいな感じで、個数を求めることが可能です。

月数の部分をA列の値を参照するようにしておけば、あとはフィルコピーで1~12月分求められるかと・・・
    • good
    • 0

ブック2に、「ブック1のシートをのぞきにいったピボットテーブル」を作って、


以下のような感じでやっても目的のことができるのではないでしょうか?

・日付をもとに「年」と「月」でグループ化
・集計の方法を「個数」などにしてみる
・ピボットテーブル側のフィルタ機能で、目的の「年」と「月」に絞り込む
・その結果をコピーして、ブック2の他のシートに値の貼り付けをし、
 必要な情報だけを残してあとは削除。

そういう意味ではなかったのでしたら本当にごめんなさい・・・。
    • good
    • 0

あっ!


Sheet2のA2に「4月」があると想定すると最終行の設定位置は
Sheet2.Cells(2, 2).Value = intS
ですね(-_-;)
    • good
    • 0

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

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


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

人気Q&Aランキング