• ベストアンサー

複数フィルターのリセット

立て続けに質問ばかり出しています。 下記の処理を同時に行う場合、1行の記述で済ませることができますか? Selection.AutoFilter Field:=1 Selection.AutoFilter Field:=2 Selection.AutoFilter Field:=3 今は問題なく稼動しているので別に構わないのですが、今後もっともっと多いフィルターを一度にリセットさせる場合はどうしようかと疑問に思った次第です。

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

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

こんにちは。 たぶん、こういうことでは?  With ActiveSheet  If .AutoFilterMode And .FilterMode Then   .ShowAllData  End If  End With  

Velvet-R
質問者

お礼

ありがとうございます。現時点で描いていた処理に適した回答です。 今は3列のフィルターを利用して数種類程度の集計をしているだけですが、 いずれ20列前後中の複数列の条件を組み合わせて十数通りの集計が必要になると考えていました。 これで不要な手間をかけずに「リセット&再集計」ができそうです。

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

繰り回し処理に持ち込むため、Array関数で配列的なデータを持つ。 列は不連続で、クライテリアも自由指定で A列1、B列2、D列t のオートフィルター AND条件で絞られます。 条件数は4以上増やせるのは簡単だと判りますね。 Sub test01() c = Array("", 1, 2, 4) cr = Array("", 1, 2, "t") Selection.AutoFilter For i = 1 To 3 Cells(1, c(i)).AutoFilter Field:=c(i), Criteria1:=cr(i) Next i End Sub

Velvet-R
質問者

お礼

求めていた以上の回答でした。 複数条件の集計はこの方法で、リセットはNo.1の方の回答方法で、と早速利用させて頂きます。 ありがとうございました。

Velvet-R
質問者

補足

お礼を投稿した後ですが、ありがとうポイントを付けるにあたりWendy02様とimogasi様、どちらも20ポイントのお礼をしたかったのですが、 今回は最初に求めていた回答をして下さったWendy02様に20ポイントを差し上げることにしました。 imogasi様には他の質問への回答も頂いており感謝しております。 これからもよろしくお願い致します。

関連するQ&A

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

    マクロ オートフィルタで困っています。 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

  • 【エクセル マクロ】オートフィルター後の行削除

    Excel2003を使用しています。 オートフィルターを利用した作業をマクロの記録で処理していて 抽出されたデータを行ごと削除しているのですが Selection.AutoFilter Field:=1, Criteria1:="仕入先コード" Rows("4:2102").Select Selection.Delete shift:=xlUp Selection.AutoFilter Field:=2, Criteria1:="仕入先合計" Rows("7:2008").Select Selection.Delete shift:=xlUp …と、上記のような行番号で指定されてしまい 毎月データ数が増減するので、うまく処理出来ません。 (データは、テキストファイルからエクセルに取り込んでいます) 過去の例で近いものがあれば記述の中に取り込んでみましたが… これもうまくいきませんでした。 毎月変わるデータ数に対応できるマクロの記述を教えて下さい。 よろしくお願いします。

  • 1行のVBAコードでフィルタの解除したい

    フィールド1 フィールド2 1         あ 2         い 3         う で、コマンドボタンを押したら、 A列にフィルタがかかっていても、 B列にフィルタがかかっていても、解除したいのですが、 どういうコードにすればいいのでしょうか? Private Sub CommandButton1_Click() Selection.AutoFilter Field:=1 Selection.AutoFilter Field:=2 End Sub こうするしかないでしょうか? 今は2列だから良いのですが、実際のデータは、30列以上あります。 その場合、1行のVBAコードでフィルタの解除が出来ればいいなーと思っています。 ご回答よろしくお願いします。

  • フィルタで検索した行をマクロで削除する時のコード。

    フィルタで検索した行を一括して削除するマクロを作りました。 記録して加工したマクロで今のところ動くのですが、 理解不能の箇所があるので教えてください。 下記マクロはC列の空白行をフィルターで選択して、表示された行を削除するマクロです。(データは2行目から始まっていて、フィルターは1行目に行います。また、行は全て連続しています。) また、コメントを各コードにつけています。 ここで、コメント内の(1)で示した箇所は2行目を選ぶことになっているのですが、何故これで良いのでしょう?2行目のデータがフィルターにより隠れることもあるのですが、このコードできちんと動きます。 可視セルしか削除しないのなら、分かるのですが、 そのようなコードも無いようですし・・・ なぜこのコードで動くのか教えてください。 Rows("1:1").Select  '1行目を選ぶ Selection.AutoFilter  'オートフィルター Range("C1").Select   'C1を選ぶ Selection.AutoFilter Field:=3, Criteria1:="=" '空白行を探す。Field3は不明です Rows("2:2").Select  '(1) 2行目を選択 Range(Selection, Selection.End(xlDown)).Select '2行目から連続した最後の行までを選択 Selection.Delete Shift:=xlUp  '選んだところをDelして上に詰める。 Range("C1").Select  'C1を選ぶ Selection.AutoFilter Field:=3  'フィルタ解除 基本的なことかもしれませんが、ご教示頂ければ幸いです。 よろしくお願いします。

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

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

  • エクセルのマクロでフィルタを判別するマクロ

    いつもお世話になっております。 エクセル2000で オートフィルタを使用した表があります。 やりたいことは以下の通りです。 AutoFilter Field:=1(一番左側のフィルタ)が、 なんらかのフィルタリングがされている (フィルタの▼が青い状態)のときはそのままで、 なにもフィルタリングされていない (フィルタの▼が黒い状態)のときは Selection.AutoFilter Field:=1, Criteria1:="<>#N/A", Operator:=xlAn を実行させたいのです。 どのようなマクロを記述すればいいか ご教示ください。 よろしくお願いします。

  • Excel のフィルター

    下記の表があり、フィルターで1を選ぶ場合に自動マクロで記録すると Selection.AutoFilter Field:=1, Criteria1:="1" となります。 Criteria1:=~ ~の部分をセルで参照するにはどうすればいいのでしょうか?単純にCriteria1:=cells(3,1) としてもうまくいきません。 正しい記述方法をお願いいたします。よろしくお願いします。 A列  B列 1 りんご 2 みかん 3 すいか 1 りんご 2 みかん 3 すいか 1 りんご 2 みかん 3 すいか

  • エクセルのマクロ

    勉強を始めたばかりで処理を繰り返す項目をいろいろ調べたのですがうまくいきません。教えてください。 オートフィルタで3列目を”東京 ”という文字でを抽出したあとである処理をし、その後同じ列で今度は”神奈川 ”を選び同様の処理をする。また今度は 次は"千葉”と繰り返したいのです。 マクロを見てみると Selection.AutoFilter Field:=3, Criteria1:="1"    何らかの処理 Selection.AutoFilter Field:=3, Criteria1:="2"    何らかの処理 Selection.AutoFilter Field:=3, Criteria1:="3"    何らかの処理 となっています。こうなると必要な数だけ これをコピーしないといけないので ループのようなもので下記の■の部分の 数字を1.2.3.~と処理を繰り返す毎に 増やして生きたいのです。 そしてリストの最後にきたらおしまいにしたいのですが・・・・。FOR NEXT とか DO LOOP とか 試しましたが、私の幼稚な知識ではうまく動いてくれませんでした。すみませんがよろしくお願いします。 Selection.AutoFilter Field:=3, Criteria1:="■" 処理

  • Excelのフィルターなんですが

    A列 B列 1 りんご 2 みかん 3 すいか 1 りんご 2 みかん 3 すいか 1 りんご 2 みかん 3 すいか 上記の表があり、フィルターで1を選ぶ場合に自動マクロで記録すると Selection.AutoFilter Field:=1, Criteria1:="1" となります。これをC3に入力した数字を参照したいので Selection.AutoFilter Field:=1, Criteria1:=cells(1,3) としてみたのですが、うまくいきませんでした 下記のように選択されるようにしたいのですが、どうすればよいのでしょうか? A列 B列 1 りんご 1 りんご 1 りんご

  • 可視セルの削除

    オートフィルタで抽出したデータを行ごと削除するのですが、 可視セルで検索をすると、1列目の見出し行も含まれてしまいます。 1列目を除くには、どのように記述したらいいのでしょうか? Selection.AutoFilter Selection.AutoFilter Field:=5, Criteria1:="=" Selection.SpecialCells(xlCellTypeVisible).Select ↑これで、今、削除したい部分、プラス見出し行が選択されています。

専門家に質問してみよう