- ベストアンサー
オートフィルタ機能でデータの存在を確認し、効率的な作業をする方法
- オートフィルタ機能を使った作業で、データの存在を確認し、効率的な作業をする方法について教えてください。
- 都道府県別、年度別に分かれたデータを別のシートに分類する作業で、データが欠損した場合や特定の地域のデータがない場合、効率的なマクロを作成したいです。
- オートフィルタを使わずに効率的な方法があれば、それも教えていただきたいです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
#1です >各列の1行目は「都道府県名」「年度」「件数」がアクティブになっていて この3つが数えられたのかなと思いました。 そうです。該当が無くても見出しはいつもシートに残るので、列的に3つの項目があれば該当ない場合は3です。 推測してもらえると思って書かなかったが。 もう少し複雑にやれがA列だけのセル数=行数が捉えられるかもしれない。その場合も該当無しでも見出しセルが残るので、そのため1です。 ーー ひょっとするとSUBTOTAL関数(関数ではこれを使い、件数を指定する第2引数は2か3を指定する)があるのでこれを使うと検索結果の件数が捕まえられるかもしれない。 その場合は、見出し行を除いてA2セルを基点に出来るから、該当無しの場合は0になるでしょう。 本質問の場合で、やってないので不確かですが。
その他の回答 (1)
- imogasi
- ベストアンサー率27% (4737/17069)
添付画像が見えないようだ。 ーー 手探りでやってみると Sub Macro1() Range("A1").CurrentRegion.Select Selection.AutoFilter Field:=1, Criteria1:="靜岡" Selection.AutoFilter Field:=2, Criteria1:="2002" Selection.SpecialCells(xlCellTypeVisible).Select c = Selection.Cells.Count If c = 2 Then MsgBox "該当なし" Else MsgBox c / 2 - 1 & "件該当あり" End If End Sub で2件のとき(見出し行のみ)が該当無しと判別できるのでは。 例データ 府県 年度 長野 2001 長野 2001 長野 2001 長野 2002 長野 2001 長野 2003 長野 2001 長野 2001 靜岡 2002 山梨 2001 山梨 2003 山梨 2004 靜岡 2001 靜岡 2001 靜岡 2001 靜岡 2002 ぐらいで、条件を変えてテストしてみると不都合は出なかった。 ーー 該当無しの場合はコピーをしないとか、何か手を打てるのかな。 府県は47、年度は1996-2009など、条件は機械的にVBAで繰り返して、行い、一県1年度を実行ごとに上記の判定をして、後にやることを決める。
お礼
お返事が遅れて申し訳ございません。 画像が見れないのに回答していただいてありがとうございます。 教えて!gooでは見れませんでしたか? 自宅以外のパソコンでは問題なく見ることができたのですが。 早速、試してみたのですが、疑問がございます。 imogasi様の例で話しますね。 例えば、1列目のオートフィルタで静岡を選択し、 2列目のオートフィルタで2004年を選択します。 ちなみに3列目にはその年度の事故の件数とか倒産の件数とかデータを入れるとします。 この場合、教えていただいたマクロを実行しますと、 静岡には2004年のデータがないので0件になると思ったのですが、 3件になりました。 各列の1行目は「都道府県名」「年度」「件数」がアクティブになっていて この3つが数えられたのかなと思いました。 件数で場合わけするのは目から鱗でした! 該当データがないとき、例えば2004年がないときは 「年度」の列の行数は1列だけになるので、 2以上になるときだけ実行すればいいと思いいと考えました。 SpecialCells関数を使ってそのようなことはできるのでしょうか? お時間があれば教えてください。
お礼
subtotal関数でうまくいきました! 小計を出すくらいしか使っていなかったのですが、 まさかこんな使い方があるとは・・・ まだまだ駆け出しですので、他の方法も 考えてみたいと思います。 とても勉強になりました。 ありがとうございました。