• ベストアンサー

エクセルVBAで3つ以上の複数条件でオートフィルタをする方法

表題のとおりなんですが、コマンドボタンを使って、VBAで3つ以上の条件でオートフィルタを実行したいのですが、なにかいい方法はありませんか?

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

  • ベストアンサー
  • NOBNNN
  • ベストアンサー率50% (93/186)
回答No.1

もう少し、具体的に操作内容などを定義してください。 何をしたらどうなる。という具合に オートフィルで3個以上の条件とは? リストの列が3個以上あって、それぞれの選択条件を行いたいと いうことでしょうか? 、やり方は マクロ→新しいマクロの記録を行い。操作は EXCEL で全部のデータを選択状態にし、オートフィル を実行します。 3つの列にたいして条件を選択します。新しいマクロの記録を終了します。 VBA画面を開きソースコードを確認します。 あとは、シート上にボタンを貼り付け、この記録した内容を実行するようにすれば同じことが再現されます。 もし、選択条件の内容を自由に変えたいなら Selection.AutoFilter Field:=nn, Criteria1:="xx" の nnは列番号、xxがオートフィルのリスト選択条件です。 ここを変化させるようにしてください。 以上

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • pauNed
  • ベストアンサー率74% (129/173)
回答No.2

こんにちは。 1つの列に対して3つ以上の条件、という意味であれば、作業列を使ったほうが良いでしょう。 例えば作業列に =OR(A2="A",A2="B",A2="C") と数式を入れて必要行にコピーし、[ TRUE ]を抽出するとか。 (オートフィルタに拘らなければ、[フィルタオプション]を活用すると2つの作業セルでできます) http://support.microsoft.com/kb/402757/ja

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

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

    オートフィルタは2つまでしか条件が設定できません。 3つ以上設定する方法はないでしょうか?(OR条件です) オートフィルタの引数(Criteria)は2つしかありませんから、恐らく3つ以上の設定はできないと思っています。 そこで、オートフィルタを複数回設定し、使っていない列に特定の文字(例えば○など)を入れ、最後にこの○を条件にすることにより、実質的に3つ以上条件のフィルタリングを実現させたいと考えております。 そこでお聞きしたいのは、各条件でフィルタリングした時に、任意の列に○を入れる方法です。 例えば myRng.AutoFilter Field:=4, Criteria1:="=?UA*" でフィルタリングしたエリアの特定の列に○を入れるにはどのようなVBAになるのでしょうか? オートフィルタを使わず、ループで全行の条件を聞いて、○をつけることは可能ですが、行数が非常に多いので時間がかかってしまいます。 オートフィルタを使えばすばやく該当行が選択されますので、何とかこれを利用したいと思っています。何か良い方法は無いでしょうか? よろしくお願いします。

  • Excel VBAのオートフィルタ解除について

    こんばんわ。 現在、コマンドボタン(オートフィルタの設定)にオートフィルタを設定するようなマクロを登録しています。 そして、別のコマンドボタンにはオートフィルタの解除を実施するマクロを書きたいんです。 しかし、オートフィルタを設定していない時に、解除のマクロを実行するとエラーになってしまいます。どうしたら良いのでしょうか? If・・・文を使って、対象セルにオートフィルタが設定している時は解除を実施し、オートフィルタが設定されてない時は、何も実施しない。 このようなマクロはどうしたら良いのでしょうか? よろしくお願いします。

  • エクセルVBAでの複数条件でオートフィルタをする方法

    VBA初心者です。 例えば、シートに A  B 1 桃  100 2 柿  150 3 葡萄 400 というデータが書いてあって、ある時は「桃or柿」、またある時は「柿」だけ、「柿or葡萄」というようにVBAでオートフィルタをかけてデータを抽出したいと思っています。 その条件は、別にリストボックスが用意されていて、ユーザが選択した項目に該当するデータだけを取得したいのですが・・・ 不特定数の複数項目をオートフィルタの「or」条件で結ぶ事が出来ずに困っています。それともオートフィルタでは無理なのでしょうか? (知識が乏しくてすみません) どなたか良い解決策、または別策がありましたらご教授下さい。

  • EXCEL VBAでのオートフィルター

    EXCELのVBAで日付のデータを 過去1日、過去1週間、過去1ヶ月などのボタンを作成し クリックしたらオートフィルター機能で各条件に 合ったデータを表示するにようにしようと思っています。 しかし、フィルターがない状態でクリックすると 正常に機能するのですが連続してボタンを クリックするとうまくいきません。(表示がかわらない) 良い対策方法、または正しいやり方を教えてください。 よろしくお願いします。 EXCEL2000 Sub ボタン_クリック() Rows("3:3").Select Selection.AutoFilter Selection.AutoFilter Field:=1, _ Criteria1:=">=" & , 条件日,Operator:=xlAnd End Sub

  • VBAでオートフィルターの再検索

    現在VBAでオートフィルターで絞ってある条件を一度解除してもう一度同じ条件で検索をしたいと思っていますが、出来ず困っています。 内容としては たとえば、A1に"数字"、A2に"2"、A3に"3"とあった場合、A1でオートフィルターをかけ、絞り込みます。(何の条件で絞り込んだかは不明) この状態から、VBAを使います。 VBAで「一度オートフィルターを解除し、再度オートフィルターで同じ条件で絞る」という作業をしたいのですが、解除はできますが、同じ条件で再度絞り込みができません。 (たぶんCriterialの値を取得するのでしょうか?それもやり方がわかりません。) 何をしたいのか目的はと聞かれると、説明するだけでもややこしくなってしまいますので、簡単にやりたい作業だけかかせていただきました。 こんな作業は出来ますでしょうか? 教えていただけたら、幸いでございます。 意味が分からなければ、また説明させていただきます。  

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

    こんにちは。人からもらったExcelブックですが、フィルタを実行しているシートのフィルタボタン(▽このボタンです。)を押してもプルダウンの選択項目が出てこなくなっていました。そこで、いったんオートフィルタをメニューから解除してみるのですが、データはすべて表示されず、画面はフィルタボタンが外れただけの状態になります。その後、行の再表示を実行するとすべて表示されるようになりました。 この後、再度オートフィルタを実行すると問題なく操作はできるようになりました。 ちなみに初期の状態では、2つの列にオートフィルタを実行しているようです。 作成者にどうしてこうなるのか聞かれましたが、さっぱりわかりません。また、シートやブックの保護も実行されてませんでした。 実行しているソフトはExcel2000です。作成したソフトはExcelでバージョンは残念ながら不明です。 お分かりの方、どうぞよろしくお願いいたします。

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

    初歩的な質問で恐縮です。 sheet1にデータ一覧を作成(仮にシート名を「データシート」とします)し、 sheet2へ検索条件を入力するセルとコマンドボタンを配置し、sheet1のデータを「オートフィルタで検索」するマクロを作成しました。 マクロの検証も行い動作の確認も行いマクロの実行してみると、ちゃんとフィルタ処理されており全て完璧!となりました。 ところが、他人への配布も予定していたので、データの改ざんを防止するため、データシートをシート保護して実行したところ、「ロックされているため実行できません」旨のエラーになってしまいました。 やはり、シートの保護を行なってしまうと、マクロであってもオートフィルタ機能は使用できないのでしょうか? 何か解決(保護状態でもオートフィルタ機能が使用可能)方法はありませんでしょうか? ご教授お願いいたします。

  • EXCEL2003で三つ以上の条件でフィルタ

    EXCEL2003でオートフィルタを使用すると、一つの列に対し、二つの条件までしか設定できません。 三つ以上、具体的には、「A」を含む 又は 「B」を含む 又は 「C」を含む…といったようなフィルター設定をしたいのですが、 これをVBAなどでできませんでしょうか。 2007なら可能なのは分かっているのですが、会社のPCの為2003しか使えません。 よろしくお願いします。

  • Excelのオートフィルタオプションの「で始まる」について?

    下記の 「2」 の方法で 「実行後」 に出来ません。 下記をオートフィルタにて、 オートフィルタオプションの抽出条件の指定で、 1、 AND  OR     ・・・ を使用すれば出来ますが、 2、 「75」で始まる   ・・・ を使用した場合、 「現状」 になってしまいますが、 「実行後」 にするには、 データをこのままにした状態では、 「2」 の方法では不可能なことでしょうか? 「セルの書式設定」 を 「文字列」 に設定しても出来ませんでした。 以上 よろしくお願い致します。 ----実行前---- 75 12○ 75▲ 14× 75 75▲ 19 ----実行後---- 75 75▲ 75 75▲ -------------- ----現状-----になってしまいます 75▲ 75▲ --------------

  • 「~以上、~以下」のオートフィルタのVBAについて

    こんばんは、オートフィルタについて2つ質問させてください! 1つ目は、10列目に入っている値で、20170901以上かつ20170931以下の値をオートフィルタで抽出しようと以下のVBAを入力しましたが、該当するデータがあるにも関わらず抽出ができませんでした(T_T)何か間違っているのでしょうか…?! Range("A1:K" & Cells(1).CurrentRegion.Rows.Count).AutoFilter Field:=10, Criteria1:=">=20170901" _ , Operator:=xlAnd, Criteria2:="<=20170931" 2つ目は、同様のデータでInputBoxを利用し、入力した数字をそのままオートフィルタの条件に反映しようとする以下のVBAを入力してみました。しかし、やはり記述の方法が違うのか該当するデータがあるにも関わらず抽出は成功しませんでした・・・。 Dim 日付 As Date 日付 = InputBox("処理月を入力して下さい(例:201709)") Range("A1:K" & Cells(1).CurrentRegion.Rows.Count).AutoFilter Field:=10, Criteria1:=">= 日付 & 01" _ , Operator:=xlAnd, Criteria2:="<= 日付 & 31 " どなたかご助力いただけるととても助かります、どうぞよろしくお願いいたします!m(_ _)m