Excel VBA:配列で複数条件を指定してフィルタリングする方法(7つの方法)

  • これを共有
Hugh West

をお探しの方。 濾過器 Excel で複数条件の配列を使用する ブイビーエー 大規模なデータセットを複数の基準でフィルタリングすることができます。 ブイビーエー を、Excelの従来の機能を使うのではなく、コードで表現しています。

では、本編を始めましょう。

ワークブックダウンロード

複数条件でのフィルタリング.xlsm

Excel VBAで配列の複数条件でフィルタリングする7つの方法

次のデータセットには,生徒の名前とIDに対応する点数のレコードがいくつかあります. このデータセットを,いくつかのコードを用いて,さまざまな条件に基づいて配列でフィルタリングしてみましょう.

を使用しています。 Microsoft Excel 365 のバージョンがありますが、ご都合により他のバージョンをお使いください。

方法-1: 複数の条件を配列のテキストとしてフィルタリングする

ここでは、次のようなデータセットに対して 生徒名 文字列を含む複数の条件に対する エミリー , ダニエル そして ガブリエル を配列で指定します。

Step-01 :

➤ に進みます。 デベロッパー タブ>> ビジュアルベーシック オプションです。

その後 Visual Basic エディター が開きます。

➤ に進みます。 インサート タブ>> モジュール オプションです。

その後 モジュール が作成されます。

ステップ02 :

➤ 次のコードを書いてください。

 Sub filter_with_array_as_criteria_1() ActiveSheet.Range("B3:D3").AutoFilter Field:=2, _ Operator:=xlFilterValues, Criteria1:=Array("Emily", "Daniel", "Gabriel")終端サブ。 

ここでは、ヘッダー名を範囲指定で宣言しています。 B3:D3 というフィルターを適用することになります。 フィールド:=2 はこの範囲の列番号で、この列番号に基づいてフィルタリング処理を行います。

最後に、複数の生徒の名前を宣言するために、基準を配列として以下のように設定しました。 エミリー , ダニエル そして ガブリエル .

➤ プレス F5 .

次に、データセットを複数の基準でフィルタリングして、学生の名前とそれに対応する 画像 マークス 生徒の皆さんへ エミリー , ダニエル そして ガブリエル .

続きを読む エクセルで複数の条件をフィルタリングする(4つの適切な方法)

方法2:Excel VBAで配列に複数の数値基準を設定してフィルタリングする

ここでは、以下のデータセットからidをフィルタリングすることにします。 101135 , 101137 そして 101138 を、配列の複数の条件として使用することである。

ステップス :

➤フォロー Step-01 方法-1 .

➤ 次のコードを書いてください。

 Sub filter_with_array_as_criteria_2() ActiveSheet.Range("B3:D3").AutoFilter Field:=1, Operator:=xlFilterValues, _ Criteria1:=Array("101135", "101137", "101138") End Sub 

ここでは、ヘッダー名を範囲指定で宣言しています。 B3:D3 というフィルターを適用することになります。 フィールド:=2 はこの範囲の列番号で、この列番号に基づいてフィルタリング処理を行います。

最後に、複数の生徒のIDを宣言するために、基準を配列として以下のように設定しました。 101135 , 101137 そして 101138 であり、文字列として指定するため、反転カンマで囲んでいます。 オートフィルター は、文字列の配列に対してのみ機能します。

➤ プレス F5 .

その後、IDを持つ生徒の名前と点数が表示されます。 101135 , 101137 そして 101138 .

続きを読む Excelで列から配列に一意な値を取得するVBA(3つの条件)

方法-3:範囲に複数の条件を設定して、配列として使用する

ここでは、その基準を列挙しています。 リスト IDを含む列 101134 , 101135 そして 101136 をベースに、フィルタリング処理を行います。

ステップス :

➤フォロー Step-01 方法-1 .

➤ 次のコードを書いてください。

 Sub filter_with_array_as_criteria_3() Dim ID_range, k As Variant ID_range = Application.Transpose(ActiveSheet.Range("F4:F6")) For k = LBound(ID_range) To UBound(ID_range) ID_range(k) = CStr(ID_range(k)) Next k ActiveSheet.Range("B3:D3").AutoFilter Field:=1, Operator:=xlFilterValues, _ Criteria1:=ID_range End Sub 

ここでは、以下のように宣言しています。 ID_range , k かわりに バリアント ID_range は、複数の条件を格納する配列であり k は,配列の下限から上限までの増分です. 下限と上限の指定には,それぞれ LBOUND機能 UBOUND機能 を、それぞれご紹介します。

があります。 FORループ は,配列中の文字列以外の値を文字列に変換するために CStr関数 最後に、このアレイを次のように利用しました。 基準1 .

➤ プレス F5 .

その後、IDを持つ生徒の名前と点数を取得することができます。 101134 , 101135 そして 101136 .

続きを読む Excel VBAで複数の基準で異なる列をフィルタリングする

類似の読み物

  • エクセルでユニークな値をフィルタリングする方法(8つの簡単な方法)
  • Excelでカスタムフィルタを実行する(5つの方法)
  • VBAで配列の平均を計算する(マクロ、UDF、UserForm)
  • エクセルフィルタのショートカット(例題付き3つの簡単な使い方)

方法-4:SPLIT関数とJOIN関数を使って複数条件の配列を作成する。

ここでは、以下のリストを活用し リスト カラムを配列として使用し、データセットに適切なフィルタをかけるために SPLIT機能 , JOIN機能 そして TRANSPOSE機能 における ブイビーエー のコードになります。

ステップス :

➤フォロー Step-01 方法-1 .

➤ 次のコードを書いてください。

 Sub filter_with_array_as_criteria_4() ActiveSheet.Range("B3:D3").AutoFilter Field:=1, Operator:=xlFilterValues, _ Criteria1:=Split(Join(Application.Transpose(Range("F4:F6")), ","), ",") End Sub. 

これです。 トランスポーズ が変換されます。 2D 配列を 1D ならべかえる オートフィルター は動作しません。 ジョイン はそれぞれの値を文字列の配列に結合し、最後に スプリット は、各文字列を分解して、データセットのフィルタリングの基準として個別に入力させる。

➤ プレス F5 .

最後に、IDを持つ生徒の名前と点数が表示されます。 101134 , 101135 そして 101136 .

続きを読む VBAで文字列を配列に分割する方法(3つの方法)

方法-5:VBAで配列のループで複数条件を指定してフィルタリングする

この項では、以下のデータセットを、以下のような条件でフィルタリングする。 学生証 の欄に記載されているような複数の条件に対して リスト の欄があります。

ステップス :

➤フォロー Step-01 方法-1 .

➤ 次のコードを書いてください。

 Sub filter_with_array_as_criteria_5() Dim k As Integer Dim ID_range(100) As String For k = 4 To 6 ID_range(k) = ActiveSheet.Range("F" & k) Next k ActiveSheet.Range("B3:D3").AutoFilter Field:=1, Operator:=xlFilterValues, _ Criteria1:=ID_range End Sub... 

ここでは、以下のように宣言しています。 k かわりに 整数 , ID_range(100) かわりに 文字列 どこ ID_range は配列で、最大で 100 この配列の値を決定するために、ここでは FORループ にとって k から 4 まで 6 の行番号として使用します。 リスト カラムと F は列名である。

最後に、この配列を 基準1 にとって オートフィルター .

➤ プレス F5 .

最終的には、IDを持つ生徒の名前と点数が表示されます。 101134 , 101135 そして 101136 .

続きを読む VBAでExcelの複数条件をフィルタリングする(AND型とOR型の両方)

方法-6: 複数条件に名前付き範囲を使用する

ここでは、その中の生徒の名前をいくつか挙げています。 リスト 列を作成し、この範囲を 学生 この名前付き範囲を使って,複数の条件を含む配列を定義します. オートフィルター 機能を搭載しています。

ステップス :

➤フォロー Step-01 方法-1 .

➤ 次のコードを書いてください。

 Sub filter_with_array_as_criteria_6() Dim Student_range, k As Variant Student_range = Application.Transpose(ActiveSheet.Range("Student")) ActiveSheet.Range("B3:D3").AutoFilter Field:=2, _ Operator:=xlFilterValues, Criteria1:=Student_range End Sub. 

ここでは、以下のように宣言しています。 学生範囲 , k として バリアント を使用しました。 TRANSPOSE機能 を変換する必要があります。 2D 指定された範囲の配列 学生 にしています。 1D の配列に格納し、それを 学生範囲 として使用されます。 基準1 に対して オートフィルター メソッドを使用します。

➤ プレス F5 .

次に、データセットを複数の基準でフィルタリングして、学生の名前とそれに対応する 画像 マークス 生徒の皆さんへ ジェファーソン , エミリー そして サラ .

関連コンテンツ VBAでExcelの配列を転置する(3つの方法)

方法-7: 複数の条件を配列で指定してテーブルをフィルタリングする

ここでは、以下のようになります。 テーブル その名も 表1 とExcelを使って ブイビーエー このテーブルを名前に基づいてフィルタリングしてみます。 エミリー , ダニエル そして ガブリエル を複数の条件として配列で指定します。

ステップス :

➤フォロー Step-01 方法-1 .

➤ 次のコードを書いてください。

 Sub filter_with_array_as_criteria_7() ActiveSheet.ListObjects("Table1").Range.AutoFilter Field:=2, _ Operator:=xlFilterValues, Criteria1:=Array("Emily", "Daniel", "Gabriel")で終了 Sub. 

これです。 ListObjects("テーブル1") は、テーブルの定義に使用されます。 表1 , フィールド:=2 には、この範囲の2列目をフィルタリングのベースとして設定するために、最後に、複数の名前を含む配列を定義しています。 基準1 .

➤ プレス F5 .

最終的には、データセットを複数の条件でフィルタリングして、生徒の名前とそれに対応する 画像 マークス 生徒の皆さんへ エミリー , ダニエル そして ガブリエル .

続きを読む Excel VBA:セルの値で表をフィルタリングする(6つの簡単な方法)

プラクティス部門

自分で練習できるように 実践編 という名前のシートに、以下のようなセクションを作成します。 実践編 .自分でやってください。

結論

この記事では、Excelを使用して複数の条件を配列としてフィルタリングする方法を取り上げようとしました ブイビーエー もし、ご意見、ご感想がありましたら、コメント欄にご記入ください。

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