• ベストアンサー

オートフィルタをかけるマクロ

A12からA50に表示されている内容でB列にオートフィルタをかけ、印刷をする というマクロですが、 Selection.Autofilter field:=2, Criteria1:=Range("A12") Activesheet.Printout を39回コピーし、"A12"の部分を"A13"............"A50"に変えていきました。 本当はもっとスッキリできると思うのですが、そこがまだよくわかりませんので どなたか教えていただけないでしょうか。 A列は必ず50までデータがあるとは限りません。 エクセル2003使用の初心者です。 よろしくお願いします。

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

  • ベストアンサー
  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.1

Dim i As Integer For i = 12 to 50 If Range("A"&i) Is Null Then Exit For Selection.Autofilter field:=2, Criteria1:=Range("A"&i) Activesheet.Printout Next i 又は Dim RG As Range For Each RG In Range("A12:A50") If RG Is Null Then Exit For Selection.Autofilter field:=2, Criteria1:=RG Activesheet.Printout Next RG

graycat222
質問者

お礼

お礼が遅くなり申し訳ありません。 おかげさまでうまくいき、非常に助かりました。 変数をうまく使えるように勉強していきたいと思います。 またよろしくお願いします。

その他の回答 (1)

回答No.2

「B列にオートフィルタをかけ、印刷をする」 この操作を「マクロの記録」で記録しておき、 記録したマクロを実行してみてはいかがでしょうか。 また、記録されたマクロはソースコードになっているので、 気に入らない箇所を修正して、より使い勝手のよいものに することもできます。 マクロを最初からプログラムするのは大変だし、 またオブジェクトの名前などを知っていないと プログラミングも難しいと思います。 私も昔は色々なマクロを組んで経理業務に 使っていましたが、まず自動記録で基本部分を 作ってから、部分的に修正していました。

graycat222
質問者

お礼

ありがとうございました。 Selection.Autofilter field:=2, Criteria1:=Range("A12") Activesheet.Printout は自動記録したマクロです。 自動記録だけではマクロが長くなるためもっとスッキリさせる方法を質問したのです。 B列は可変なので、何行で終わるかわかりませんし。

関連するQ&A

  • オートフイルターで選んだデータを連続で印刷したい

    マクロの初心者です。自動マクロでオートフイルターで該当する番号のデータを選んで印刷するという作業を登録しましたが、実は同じ作業を 7回から8回繰り返すことになり、つど登録のボタンを押すのは大変なので連続で印刷できないか考えました。   (1)Sheets("Sheet1").Select   (2)Range("G3").Value = "2"   (3)Selection.AutoFilter Field:=1, Criteria1:="2"   (4)ActiveWindow.SelectedSheets.Printout   (5)Selection.AutoFilter Field:=1 (2)と(3)の入力する番号を変えて(5)の前に以下のように印刷する回数だけ書き加えて実行したら、動きましたが印刷には結構時間がかかりました。別の書き方で印刷時間が短縮されるような方法はありませんか。  Range("G3").Value = "3"    Selection.AutoFilter Field:=1, Criteria1:="3"  ActiveWindow.SelectedSheets.Printout    Range("G3").Value = "4"   Selection.AutoFilter Field:=1, Criteria1:="4"  ActiveWindow.SelectedSheets.Printout さらに、できればデータのない番号の時は印刷しないようにしたいのですがどうしたらよいのでしょうか。 G3とオートフイルターで選ぶ番号とは同じ番号です。G3に入れた番号で G4にあて先が入るように関数を設定してあります。 どうぞよろしくお願いします。 Windows XP Excel2000 を使っています。                                

  • オートフィルタ マクロについて

    質問です。 オートフィルタで複数列を1つの条件で抽出したいのですが、教えてください。 たとえばA列が納品書No.・B列が受注No.・C列が商品No.なのですがすべて数字の為、出来ればInBox一回でA-C列を検索してほしいです。 指定納品書NO 受注NO 元品番 21812 3252608 77 21880 3307989 32B 22053 3389769 95414A 22050 3389770 67312H 22052 3389771 67312H 22050 3389773 67118H 以下の様なマクロを作ってみましたが、 A-C列全てに一致しないと抽出しないようです。 どなたかご教授いただけないでしょうか? マクロ '条件1 の設定 Dim 検索NO As Variant '抽出キーの入力指示 検索NO = InputBox("検索NOを入力てください。") 'キャンセルした場合の処理 If 検索NO = Empty Then Exit Sub End If 'オートフィルタがかかっていなかったらかける 'かかっていたら念の為一度解除し再設定 If ActiveSheet.AutoFilterMode = False Then Range("A2:O2").Select Selection.AutoFilter Else Selection.AutoFilter Range("A2:O2").Select Selection.AutoFilter End If Selection.AutoFilter Field:=1, _ Criteria1:=">=" & 検索NO, Operator:=xlAnd, Criteria2:=" " & 検索NO Selection.AutoFilter Field:=2, _ Criteria1:=">=" & 検索NO2, Operator:=xlAnd, Criteria2:=" " & 検索NO2 Selection.AutoFilter Field:=3, _ Criteria1:=">=" & 検索NO3, Operator:=xlAnd, Criteria2:=" " & 検索NO3 AutoFilterMode = False Application.ScreenUpdating = True End Sub よろしくお願いいたします。

  • マクロ オートフィルタで困っています。

    マクロ オートフィルタで困っています。 1列目と2列目からそれぞれ条件をフィルタで抽出し、抽出された行を削除するマクロを組んだのですが(下記)、Bの条件が表にない場合に2行目から下が全て削除されてしまいます。 元の表は毎週変わるため、抽出する条件があるかないかはその時次第です。 オートフィルタにこだわってはいませんが、その他の抽出方法もいまいち分からず……。 どのようにすればよいのか、教えていただけますでしょうか。 宜しくお願い致します。 <マクロ> Sub Macro() Selection.AutoFilter Field:=1, Criteria1:="A" Selection.AutoFilter Field:=2, Criteria1:="B", Operator:=xlAnd Dim gyou(1) As Long gyou(0) = 2 gyou(1) = Range("A1").CurrentRegion.Rows.Count Rows(gyou(0) & ":" & gyou(1)).Select Selection.Delete Shift:=xlUp End Sub

  • Excelマクロでオートフィルターからコピペ

    ファイルのB列の値から0以外の値をオートフィルターで抽出し、値を、別のファイルのD列の一番下に貼りつけるマクロを作っていますがうまくいきません。 今作ったのは Sub macro1() If ActiveSheet.AutoFilterMode = False Then Range("A:G").Select Selection.AutoFilter Else Selection.AutoFilter Range("A:G").Select Selection.AutoFilter End If Selection.AutoFilter Field:=2, Criteria1:="<>0", Operator:=xlAnd Range("A1").Select Range("B2", Range("B2").End(xlDown)).Select Selection.Copy Windows("貼りつけるファイル名").Activate Cells(Rows.Count, 4).End(xlUp).Offset(1).Select ActiveSheet.Paste End Sub です。 フィルターで0以外の値を抽出しコピーまではできていますが、貼りつけるところでエラーがでます。 Microsoft Visual Basic 400 というエラーです。 何が悪いのか分かりません・・・。 分かる方いましたらご教授ください。よろしくお願いします。

  • Excelマクロ オートフィルタ可視領域の特定部分をコピー

    何方か、回答をお願いします。 下記もマクロは 、B列:C列(B1:C1はタイトル)をオートフィルタに掛けて フィルタに掛かった一番上のデータをコピーして貼り付けているマクロですが。 やりたいことは、B1:C1のタイトルとフィルタに掛かった可視領域の一番上の データ(オートフィルタに引っかからないでデータが無い場合も有り)をコピー して貼り付けたいのですがどの様なコードを書けば良いのでしょうか。? Sub フィルタ() Range("B1:C1").Select Selection.AutoFilter Selection.AutoFilter Field:=2, Criteria1:=">=1e-6" Range("B1").CurrentRegion.Select On Error Resume Next Selection.SpecialCells(xlCellTypeVisible).Areas(2).Rows(1).Select Selection.Copy Range("K15").Select ActiveSheet.Paste Application.CutCopyMode = False Selection.AutoFilter End Sub

  • 【マクロ】オートフィルター内の全データが削除される

    こんにちは、質問させていただきます。宜しくお願いします。 [エクセル] 2007 [内容] オートフィルタをかけ任意のデータのみ消したいのですが 全てのデータが消えてしまいます。 [詳細] A1~C5までデータが入っているのもだと仮定します。 (実際には項目があってフィルタがきちんとかかるものとします。)    A   B   C ----------------------- 1  ○   2個  \10 2  △   1個  \5 3  ×   3個  \15 4  ○   1個  \20 5  ○   4個  \5 オートフィルタをかけA列を基準として「○」を選択します。 そして選択した「○」を含む行(1行・4行・5行)を削除し 2行・3行目が残るようにしたいです。 その一連をマクロにして処理したいのですが… 1行から5行のすべての行データが削除されてしまいます。 <マクロ作成> マクロを記憶する。 ↓ 手動でオートフィルタをかけ、「○」を選択して行を削除 ↓ マクロの記憶を終了。 ↓ マクロ文の削除する行範囲をA1からC5に書き換え ↓ マクロ実行 <マクロ作成文>  Selection.AutoFilter Selection.AutoFilter Field:=1, Criteria1:="○" ActiveSheet.Range("A1:C5").Select Selection.Delete Shift:=xlUp ※エクセル2007のバージョンによっては選択した「○」のみ 削除されるPCもありましたので、何か設定があるのかな?と 思いましたが…解決しませんでした。 何か良い案があれば教えていただきたいです。 宜しくお願い致します。

  • オートフィルター VBAでの設定について

    オートフィルターで0以外のものに絞って、 コピーしたいのですが、 値が0しかない場合にすべてのものをコピーするように なってしまうので、 コピーすることがないようにさせたいです。 例) Sub test() Sheets("Sheet1").Select Selection.AutoFilter ActiveSheet.Range("$A$2:$A$10").AutoFilter Field:=1, Criteria1:="<>0" Range("A2:A10").Select Range(Selection, Selection.End(xldown)).Select Selection.Copy End Sub このようなコードの場合にA2:A10の値が0しかなかった場合に コピーしている状態をなくしたいのですが、 どこのコードを変えたらいいでしょうか。 回答よろしくお願いいたします。

  • マクロ AutoFilter・・Criterial

    ActiveSheet.Range("$A$2:$P$5000").AutoFilter Field:=9, Criteria1:="1" というオートフィルターのマクロがあります。 Criteria1:= の次にある ”1” はどういう意味ですか?

  • オートフィルタのマクロについて

    オートフィルタのマクロを組もうとしているのですが、フィルタ条件に別シートのセルの値を入れたいのですが、そこがどうもうまくいきません。 作成したマクロは以下の通りです。 Sub 累計計算マクロ() Dim aRange As Range, bRange As Range, i As Date Set aRange = Sheets("累計").Range("B1") Set bRange = Sheets("累計").Range("B2") i = aRange.Value Sheets("クイーンエステート").Activate Range("A13:L13").Select Selection.AutoFilter Selection.AutoFilter Field:=2, Criteria1:="<=i", Operator:=xlAnd End Sub どなたか助けてください! 宜しくお願い致します。

  • excel2000のオートフィルタマクロ

    マクロ記録の簡単な編集程度の知識しかありません。 C1に入っている文字列を、完全一致ではなく、”含む”状態でオートフィルタしたいのですが、 どの様に記述すればいいですか? 現状、下記のようになっています。 Selection.AutoFilter Field:=2, Criteria1:="C1", Operator:=xlAnd よろしくお願いいたします。

専門家に質問してみよう