• ベストアンサー

エクセルのオートフィルタで複数の列にフィルタをかけ

エクセルのオートフィルタで複数の列にフィルタをかけて内容をチェックして解除してまた別の列にフィルタをかけてチェックして…を繰り返す作業をしています。 複数のフィルタを解除する際に全解除をしたいのですが あるひとつのフィルタだけはかけたままにしておきたいのです。 となると、ひとつずつ手作業で解除することになるのですが 解除し忘れてしまうことがしばしば起こります。 解除したくない列のみを残して、それ以外のフィルタを簡単に解除する方法はありませんでしょうか?

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

  • ベストアンサー
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.2

データ内のどこかの列にフィルターをかけて、その状態を保持したいと理解しました。 どのようなフィルターか分からないのと、何種類のフィルターが必要なのか分からないので、そのあたりをカバーできる方法を考えてみました。 マクロを使いますが、大丈夫でしょうか?まず、開発タブを表示します。(方法が分からなければ調べてください) 添付図のような状態で考えます。データの左上はセルA3です。 データ内をクリックして、開発タブ>マクロの記録でマクロ名が「Macro1」になると思うので、「Ok」 保持したいフィルターを実行します。例えば、添付図でA列の「A001」と「A0010」を指定します。 指定が終わったら、開発タブ>記録終了 これで、開発タブ>Visual Basic で、VBE画面で、標準モジュール>Module1 をクリックすると、以下のマクロが記録されているはずです。 ここで、誤操作を防ぐために、1行追加します。 記録したマクロ******************************** Sub Macro1() ' ' Macro1 Macro '   Selection.AutoFilter   ActiveSheet.Range("$A$3:$G$22").AutoFilter Field:=1, Criteria1:="=A0001", _     Operator:=xlOr, Criteria2:="=A0010" End Sub Selection.AutoFilter の前に、Range("A3").select を挿入します。 修正後**************************************** Sub Macro1() ' ' Macro1 Macro   Range("A3").select   Selection.AutoFilter   ActiveSheet.Range("$A$3:$G$22").AutoFilter Field:=1, Criteria1:="=A0001", _     Operator:=xlOr, Criteria2:="=A0010" End Sub 基本的にはこれで終了です。 前のフィルター処理を残して、再度フィルター処理を行いたいときには、開発タブ>マクロ>Macro1 とします。 しかしこれも結構面倒なので、添付図のようにボタンを配置し、ボタンをダブルクリックして、 Private Sub CommandButton1_Click()  Call Macro1 End Sub とかすれば、ボタンをクリックすることで簡単に実行します。(デザインモードから抜けます) さらに、残したいフィルターが沢山あれば、同じ様にMacro1、Macro2、Macro3・・・とたくさん作り、 Private Sub CommandButton1_Click()  Select Case Range("D1")   Case 1: Call Macro1   Case 2: Call Macro2   Case 3: Call Macro3  End Select End Sub とすれば、セルD1の値でマクロを切り替えることができます。 さらに、1、2、3・・・は分かりにくいので、選択内容を入力規則から選択し、それをマクロ名にすれば、分かりやすさと正確性が上がるでしょう。 マクロを使った回答ですが、極力分かりやすく説明したつもりです。

finafina
質問者

補足

回答ありがとうございます。 マクロを組む!なるほど!と思い、とても参考になりました。 実際に教えて頂いた手順通りでなんとかなりそうです。 ただ、ファイルが月毎に変わるので、その都度マクロを組むというのは 少し面倒な気がしてしまいます。。。 そのあたりをカバーできる方法はないでしょうか?

その他の回答 (4)

  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.5

>ただ、ファイルが月毎に変わるので、その都度マクロを組むというのは >少し面倒な気がしてしまいます。。。 >そのあたりをカバーできる方法はないでしょうか? ファイルとはExcel Bookでしょうか。 でき上ったマクロ(標準モジュール)をエキスポートし、新しいBookで必要になったらインポートすればいいでしょう。秒単位の所要時間です。小細工をすると、ほかのBookの処理に影響する場合があります。 または、マクロをインポートしたBookをテンプレートにする方法もあるでしょう。

finafina
質問者

お礼

教えて頂いた通り、インポート→エクスポートでなんとかなりそうです。 小細工するとほかのBOOKに影響する場合があるというのは少し不安ですが ひとまずこれでやっていこうと思います。 度々ご回答いただきありがとうございました。

  • HohoPapa
  • ベストアンサー率65% (454/690)
回答No.4

#3です。 画像をポスト漏れしたので添付します。

  • HohoPapa
  • ベストアンサー率65% (454/690)
回答No.3

>ただ、ファイルが月毎に変わるので、 >その都度マクロを組むというのは... >そのあたりをカバーできる方法はないでしょうか? 若干ハードルが上がりますが、アドインを使う方法があります。 また、今回は、課題作業を実行するメニューを コンテキストメニュー(セルを右クリックしたときのメニュー)に 追加する方法を提案します。よかったら挑戦してみてください。 手順1 アドインについての理解が必要です。 https://excel-ubara.com/excelvba4/EXCEL297.html を一読してください。 手順2 コンテキストメニューの設定解除の理解が必要です。 http://officetanaka.net/excel/vba/tips/tips30.htm を一読してください。 手順3 添付のソースコードを仕込んだブックをアドインとして保存し エクセルを閉じます。 手順4 新規ブックを開き、手順3のファイルをエクセルアドインとして有効に。 VBEの画面で、アドインの中のPublic Sub AddMenu を実行 エクセルを閉じます。 以下、フィルターのリセットが必要なブックを開き メニューから「フィルターリセット」を選択します。 なお提示したマクロは、 Activeなセルを含む列以外のフィルターの設定をリセットする仕様です。 もし、リセットしない列が固定なら、 コメントアウトしている後半のコードを使ってください。 Option Explicit Public Sub AddMenu()  Dim Newb  Set Newb = Application.CommandBars("Cell").Controls.Add()  With Newb   .Caption = "フィルターリセット"   .OnAction = "FilterReset"   .BeginGroup = False  End With End Sub Public Sub DelMenu()  Application.CommandBars("Cell").Controls("フィルターリセット").Delete End Sub '//Activeセル以外の列をリセット Public Sub FilterReset()  Dim ColCnt As Long 'フィルターの列数  Dim ColNum As Long 'Activeセルの列番号  Dim ColCounter As Long  Dim wkCnt As Long    If ActiveSheet.AutoFilterMode = False Then   MsgBox ("フィルター未設定")   Exit Sub  End If  ColCnt = ActiveSheet.AutoFilter.Range.Columns.Count  ColNum = ActiveCell.Column  With ActiveSheet.Range("$A:$A")   For wkCnt = 1 To ColCnt    If ColNum <> wkCnt Then     .AutoFilter Field:=wkCnt    End If   Next wkCnt  End With End Sub ''//指定列以外の列をリセット 'Public Sub FilterReset() ' ' Const ColNum = 2 'リセットしない列番号 ' Dim ColCnt As Long 'フィルターの列数 ' Dim ColCounter As Long ' Dim wkCnt As Long ' ' If ActiveSheet.AutoFilterMode = False Then '  MsgBox ("フィルター未設定") '  Exit Sub ' End If ' ' ColCnt = ActiveSheet.AutoFilter.Range.Columns.Count ' With ActiveSheet.Range("$A:$A") '  For wkCnt = 1 To ColCnt '   If ColNum <> wkCnt Then '    .AutoFilter Field:=wkCnt '   End If '  Next wkCnt ' End With 'End Sub '

finafina
質問者

お礼

回答いただきありがとうございます。 とても詳しく教えて頂きましたが 残念ながら勉強不足で、理解するまでにしばらく時間がかかりそうです(苦笑) しかし、右クリックをした時のメニューで追加できるというのはとても興味があるので 時間があるときにじっくり勉強してみたいと思いました。 どうもありがとうございました。

  • oboroxx
  • ベストアンサー率40% (317/792)
回答No.1

一度全部解除して、残しておきたいフィルタだけを再度かけるとした方が早いと思うのですが、それではダメなのでしょうか?

finafina
質問者

お礼

回答いただきありがとうございます。 確かにそうするのが一番手っ取り早いかなとも思ったりしています。 ただ、フィルタをかけるとき、20項目ぐらいあるうちから5つ選択するので 一回一回それをするのも煩わしいなぁと感じて質問させていただきました。 でもどうしても思いつかない場合はそうしようと思います。 ありがとうございました。

関連するQ&A

  • エクセルのオートフィルタについて

    エクセルのオートフィルタについて教えてください。 エクセル2003です。 データ-並べ替え で複数の列に対してレベルごとに昇順で並べ替えをしますが、これをオートフィルタではできないのでしょうか? 例えば、A列にクラスデータがあり、それをオートフィルタで昇順にしておいて、それをレベル1として、B列に点数があり、それをオートフィルタで降順にして、それをレベル2とするような使い方です。

  • エクセルでオートフィルターが使えない

    エクセルで「データ」->「フィルター」->「オートフィルター」が使えなくなっています。 該当シートではオートフィルターを使用していません それと ブックを開いたときにブック名の他に[作業グループ] と名前が付いています これが原因なのでしょうか 解除する方法を教えてください エクセル2002

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

    エクセルでオートフィルターをかけると全ての列にかかりますが必要な列のみかける方法はありませんか。因みに1列のみかけるのは知っていますが複数でしかも離れた列にかける事ができません。

  • エクセル2007でのオートフィルタ

    エクセル2003にてオートフィルタを活用しています。 先日、エクセル2007が入っている新しいパソコンで このファイルを開き、オートフィルタの機能を使用したところ 思うように動かなかったので質問させて下さい。 2003では A列をオートフィルタで昇順、降順をすると B列のデータも連動して動きました。 しかし、2007では A列のみがソートされ、B列は元のまま。。。 これは仕様なのでしょうか? それとも何か設定が必要なのでしょうか?

  • エクセル 特定の列にだけオートフィルター

    よろしくお願いします。 エクセルのオートフィルターの設定につきまして 普通にフィルターをかけるとデータのある列の全部にフィルターがかかってしまうのですが、 特定の列、例えばB列(会社名)にのみフィルターをかけて、他の列のデータもそれに連動するようにする方法を教えてください。

  • エクセルのオートフィルタ機能について教えてください。

    エクセルのオートフィルタ機能を使って列にチェックマークがついているもののみ抽出したい場合、「空白以外」を選択しても、行の途中からフィルターがかからなくなってしまうことがあります。 フィルタは行タイトルにつけてあります。 なぜでしょうか?

  • Excel-オートフィルタにチェックが入っているのに・・・

    こんにちは。 過去の質問確認しましたがさっぱりわからなかったので質問です・・・ 唐突にオートフィルタが使えなくなりました・・・ 症状ですが、↓ (1)シートを見る限り、オートフィルタは解除されている (フィルタの▼ボタンがない) (2)ツールバー [データ]⇒[フィルタ]を確認すると、 [オートフィルタ]の箇所にチェックがついたまま灰色になっている こんな状態です。 フィルタの解除も出来なければかけ直しも出来ない状態で非常に困っています・・・ ちなみに、シートの保護などは一切行っていませんし、作業グループというのにもなっていません。 わかる方いらしたらご回答お願いします・・・

  • EXCEL2003 VBA オートフィルター解除

    お世話になります。 EXCEL2003を使用しています。 10列ほど項目が並んだEXCELシートがありますが、このシートを開いた時にオートフィルターを10列すべての項目でオートフィルターを解除する仕組みをVBAで構築したいのです。 EXCEL2007ではオートフィルターモードという便利なプロパティがあるようですが、EXCEL2003で一括でオートフィルターを解除する方法を知りたいです。 (私以外のユーザーがオートフィルターをかけている時がよくあるので) どなたかお知恵をお借りできませんでしょうか? よろしくお願い致します。 環境 Windows XP SP3 EXCEL2003

  • (EXCEL)オートフィルタで折りたたまれない列をつくりたい

    EXCELのオートフィルタ機能は、 抽出するとオートフィルタに選択してない列も折りたたまれますよね? オートフィルタに指定していない列のみ (または特定の列のみ) 折りたたまれないようにできる設定は可能ですか?

  • Excelで、オートフィルタを解除しても、逆▲マークが取れない!

    Excel 2002 で、オートフィルタの解除後に、 逆▲マークが表示されたまま(最終列の約10列のみだけが頻繁になります)になってしまいますが、 なんとなく、動作が遅くなるような気がするんですが、 そのままにしても、全く支障はありませんか? よろしくお願い致します。

専門家に質問してみよう