Excel VBA:範囲内の複数の条件で高度なフィルタリングを行う(5つの方法)-。

  • これを共有
Hugh West

大量のデータを扱い、複数のフィルタを一度に設定する必要がある場合。 アドバンストフィルタリング において エクセル また、コピーを削除してデータをクリーンアップするために適用することもできます。 アドバンストフィルター は、その ブイビーエー を適用する方法を説明します。 VBA アドバンストフィルター での複数の基準範囲について エクセル .

練習用ワークブックをダウンロードする

この練習用ワークブックをダウンロードして、この記事を読みながらエクササイズしてください。

VBA アドバンストフィルタ.xlsm

VBAでExcelの範囲に複数の条件を設定する上級フィルタの効果的な5つの方法

以下では、以下の項目について説明します。 5 使用方法 VBA アドバンストフィルター の構文を知っておく必要があるかもしれません。 VBA アドバンストフィルター .

VBA Advanced Filter Syntax:

  • AdvancedFilterです。 は範囲オブジェクトを指します。 フィルタを適用したい範囲を設定することができます。
  • アクション は必須引数で、2つのオプションがあります。 xlFilterInPlace または xlFilterCopy . xlFilterInPlace は、データセットがある場所での値をフィルタリングするために使用されます。 xlFilterCopy は、別の目的の場所でフィルタ値を取得するために使用されます。
  • CriteriaRange: は、値がフィルタリングされる基準を表します。
  • CopyToRangeです。 は、フィルタリングの結果を保存する場所です。
  • ユニークです。 はオプションの引数です。 引数で一意な値のみをフィルタリングします。 そうでない場合は、デフォルトで、以下のようにみなされます。 .

下の画像では、実行したいすべてのフィルタを適用するためのサンプルデータセットが提供されています。

1.Excelで範囲内のOR条件にVBA高度なフィルタを適用する

最初の方法では オア を使用した基準です。 VBA アドバンストフィルター 例えば、商品名でデータを絞り込むとします。 クッキー チョコレート を適用すること。 オア の基準で、異なる行に値を配置する必要があります。 以下の手順でタスクを実行します。

ステップ1.

  • プレス アルト + F11 を開いてください。 VBAマクロ .
  • をクリックします。 挿入する。
  • を選んでください。 モジュールです。

ステップ2.

  • 次に、以下を貼り付けます。 ブイビーエー を適用するコードです。 または
 Sub Apply_VBA_Advanced_Filter_for_OR_Criteria() 'データセット範囲と条件範囲の変数を宣言 Dim Dataset_Rng As Range Dim Criteria_Rng As Range 'データセット範囲と条件範囲の位置と範囲を設定 Set Dataset_Rng = Sheets("Sheet1").Range("B4:E11") Set Criteria_Rng = Sheets("Sheet1").Range("B14:E16") '高度フィルターをかけて条件を使ってデータセットでフィルター処理する。Dataset_Rng.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Criteria_Rng End Sub 

ステップ3.

  • その後、プログラムを保存して F5 を実行します。
  • したがって、以下の画像のようにフィルタリングされた結果が得られます。

注意事項 処理を逆転させたり、フィルターペーストをすべて除去して実行するには ブイビーエー のプログラムを使用しています。

 Sub Remove_All_Filter() On Error Resume Next '前のデータセットを表示するためのフィルタを全て削除するコマンド ActiveSheet.ShowAllData End Sub 

  • その結果、以前のバージョンのデータセットが得られます。

続きを読む: Excel VBAで条件を指定して高度なフィルタをかける例(6条件)

2.Excelで範囲内のAND条件に対するVBA高度なフィルタを実行する

先ほどの方法と同様に、今度は ブイビーエー のアドバンストフィルター アンド の価格を持つクッキーを知りたいとします。 $0.65 を適用する場合、以下のスクリーンショットのようになります。 オア を適用する場合は、異なる列に値を配置する必要があります。 アンド の条件を満たす場合は、以下の手順に従ってください。

ステップ1.

  • 開くには VBAマクロ を押してください。 アルト + F11
  • 開封後 VBAマクロ をクリックし、以下を貼り付けます。 ブイビーエー コードを新しいモジュールで表示します。
 Sub Apply_VBA_Advanced_Filter_for_AND_Criteria() 'データセット範囲と条件範囲の変数を宣言 Dim Dataset_Rng As Range Dim Criteria_Rng As Range 'データセット範囲と条件範囲の位置と範囲を設定 Set Dataset_Rng = Sheets("Sheet2").Range("B4:E11") Set Criteria_Rng = Sheets("Sheet2").Range("B14:E15") '高度フィルターをかけて条件を使ってデータを絞り込みます。Dataset_Rng.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Criteria_Rng End Sub 

ステップ2.

  • プレス F5 をクリックすると、保存した後にプログラムを実行することができます。
  • 最後に、フィルタリングされた結果を取得します。

続きを読む Excelで高度なフィルタを使用してデータを別のシートにコピーするVBA

3.Excelで範囲内のAND条件とOR条件のVBA高度なフィルタを活用する

を適用することもできます。 オア とのことです。 アンド の両方の条件を組み合わせて取得したい場合。 クッキー または チョコレート が、その分 クッキー もう一つの基準価格 $0.65 が適用されます。 以下の手順で実行してください。

ステップ1.

  • 以下を貼り付けます。 ブイビーエー を開くと、コードが表示されます。 VBAマクロ .
 Sub Apply_VBA_Advanced_Filter_for_OR_with_AND_Criteria() 'Declare Variable for dataset range and for criteria range Dim Dataset_Rng As Range Dim Criteria_Rng As Range 'Set Dataset_Rng = Sheets(Sheet3).Range("B4:E11") Set Criteria_Rng = Sheets(Sheet3).Range("B14:E16") 'Apply Advanced Filter to filter data set using criteria...Dataset_Rng.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Criteria_Rng End Sub 

ステップ2.

  • そして、最初にプログラムを保存するために F5 を実行します。
  • その結果、ある特定の値を持つ値を見つけることができます。 アンド または

続きを読む: Excelで1列の複数条件に基づく高度なフィルタを適用する

類似の読み物。

  • エクセルで複数条件による高度なフィルタリング(適切な15例)
  • ダイナミック・アドバンス・フィルター Excel (VBA & Macro)
  • VBAでアドバンストフィルターを使うには(ステップバイステップガイドライン)
  • Excelで基準範囲を使った高度なフィルタリング(18件)
  • Excelの高度なフィルタが機能しない(2つの理由と解決策)。

4.VBAの高度なフィルタを使用して、Excelで複数の条件で一意の値を取得します。

さらに、データセットに重複がある場合は、フィルタリングをしながら削除することができます。 ここでは、データセットに ユニーク への対応 一意な値のみを取得し、重複を削除します。 概要は以下のとおりです。

ステップ1.

  • まず最初に ブイビーエー を押してマクロ アルト + F11.
  • 以下を貼り付けます。 ブイビーエー コードを新しいモジュールで表示します。
 Sub Apply_VBA_Advanced_Filter_for_Unique_Values() 'Declare Variable for dataset range and for criteria range Dim Dataset_Rng As Range Dim Criteria_Rng As Range 'Set Dataset_Rng = Sheets("Sheet4").Range("B4:E11") Set Criteria_Rng = Sheets("Sheet4").Range("B14:E16") 'Apply Advanced Filter to filter data set using criteria...Dataset_Rng.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Criteria_Rng, Unique:=True End Sub 

ステップ2.

  • 次に、 を押します。 F5 をクリックすると、保存後にプログラムを実行することができます。
  • そのため、ユニークなものだけ値を取得することになります。

続きを読む: エクセルでユニークなレコードのみを対象とした高度なフィルタを使用する方法

5.VBAで条件付きケースの高度なフィルタを実行する

これまでの方法に加えて、数式で条件を付けることもできます。 たとえば、次のように求めたいのです。 価格合計 よりも大きい $100 それを実現するには、次のステップを踏むだけです。

ステップ1.

  • まず、開くには VBAマクロ を押してください。 アルト + F11 .
  • 新規に選択する モジュール をクリックし、以下を貼り付けます。 VBAコード .
 Sub Apply_VBA_Advanced_Filter_for_Formula() 'データセット範囲と条件範囲の変数を宣言 Dim Dataset_Rng As Range Dim Criteria_Rng As Range 'データセット範囲と条件範囲の位置と範囲を設定 Set Dataset_Rng = Sheets("Sheet5").Range("B4:E11") Set Criteria_Rng = Sheets("Sheet5").Range("B14:E15") '高度フィルターをかけて条件を使ってデータを絞り込みます。Dataset_Rng.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Criteria_Rng End Sub 

ステップ2.

  • 次に、プログラムを保存して F5 ボタンをクリックすると、結果が表示されます。

注意事項 さらに、新しい範囲でも新しいワークシートでも、好みのスペースで結果を得るために xlFilterCopy を貼り付けるだけです。 ブイビーエー のコードで実行し、その結果を シート6 範囲内 B4:E11 .

 'データセット範囲とクライテリア範囲の変数を宣言 Dim Dataset_Rng As Range Dim Criteria_Rng As Range 'データセット範囲とクライテリア範囲の位置と範囲を設定 Set Dataset_Rng = Sheets("Sheet5").Range("B4:E11") Set Criteria_Rng = Sheets("Sheet5").Range("B14:E15") 'クライテリアを用いてデータセットに対してフィルタするためのアドバンストフィルターを適用 Dataset_Rng.AdvancedFilter Action:=xlFilterCopy.Range("D1")'Set Set Dataset_Rng (Sheets)'Range (D1") 'データセット範囲の位置を決める。CriteriaRange:=Criteria_Rng, CopyToRange:=Sheets("Sheet6").Range("B4:E11") End Sub 

  • その結果、新しいワークシートに最終的な結果が表示されます。 'シート6' .

続きを読む: Excelで条件範囲にテキストが含まれる場合に高度なフィルタを使用する方法

結論

まとめとして、以下の使い方がご理解いただけたかと思います。 ブイビーエー のアドバンストフィルター。 エクセル を使い、複数の条件範囲をフィルタリングすることができます。 これらの方法はすべて、あなたのデータを使って教え、練習するために使うべきです。 練習帳に目を通し、学んだことを活かしてください。 皆さんの重要なサポートにより、このようなセミナーを続けていくことができるのです。

ご不明な点がございましたら、お気軽にお問い合わせください。 以下のコメント欄でご意見をお聞かせください。

があります。 Exceldemy お問い合わせいただいた内容については、スタッフが迅速に対応させていただきます。

私たちと一緒に、学び続けましょう。

Hugh West は、業界で 10 年以上の経験を持つ、非常に経験豊富な Excel トレーナー兼アナリストです。彼は会計と財務の学士号と経営管理の修士号を取得しています。ヒューは教えることに情熱を持っており、理解しやすい独自の教育アプローチを開発しました。彼の Excel に関する専門知識は、世界中の何千人もの学生や専門家がスキルを向上させ、キャリアで優れた成果を上げるのに役立ってきました。 Hugh はブログを通じて知識を世界に共有し、個人や企業が潜在能力を最大限に発揮できるよう無料の Excel チュートリアルとオンライン トレーニングを提供しています。