教えて!ExcelVBA!

ExcelVBAの基礎知識・書き方について紹介します。

【ExcelVBA 関数】Filter関数で配列の中から条件に一致する要素を取り出す方法を教えて!

f:id:m_kbou:20211223093806p:plain

 

 

構文

記述方法は以下の通りとなります。

Filter([抽出元配列],”[検索文字]”,[引数])

[説明]:

配列の中から条件に一致する要素(又は一致しない要素)を抽出します。

[抽出元配列] 抽出元となる配列を指定します。
[検索文字] 検索する文字列を記述します。
※「”」(ダブルクォーテーション)で囲みます。
[引数] 「True」又は「False」を記述します。
・「True」ならば[検索文字]を含むものを返します。
・「False」ならば[検索文字]を含まないものを返します。
※省略する事も可能です。省略した場合は「True」がセットされます。

[記述例]:

Filter(配列, "県", True)
Filter(配列, "県", False)

 

使い方

使い方について具体的に説明します。

配列の中から指定した文字列を含む要素を抽出する方法

配列の中から指定した文字列を含む要素を抽出する方法について説明します。

[プログラミング例]:

Sub サンプル()

  Dim 配列(6) As String
  Dim 結果 As Variant

  配列(0) = "東京都"
  配列(1) = "神奈川県"
  配列(2) = "千葉県"
  配列(3) = "埼玉県"
  配列(4) = "群馬県"
  配列(5) = "栃木県"
  配列(6) = "茨城県"

  結果 = Filter(配列, "県", True)
  MsgBox Join(結果, ",")

End Sub

「最初に配列:配列(6)と変数:結果を定義します。次に配列:配列(6)に"東京都"、"神奈川県"、"千葉県"、"埼玉県"、"群馬県"、"栃木県"、"茨城県"を順番にセットします。Filter関数を使用して「県」を含む文字列を抽出し、変数:結果にセットします。最後にJoin関数を使用して変数:結果の内容を「,」(カンマ)を区切りで結合し、MsgBoxで表示して下さい。」との意味になります。

f:id:m_kbou:20211223093852p:plain

※上記の記述例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方についてはこちらを参考にして下さい。 

[実行例]:

①<実行>ボタンには上記のプログラミング例のプログラムが登録されています。この<実行>ボタンをクリックします。(※ボタンの作り方やボタンにプログラムを割り当てるにはこちらを参考にして下さい。)

f:id:m_kbou:20211223093903p:plain

②結果は以下の様に表示されます。抽出された要素が「,」(カンマ)で区切られ、MsgBoxで「神奈川県,千葉県,埼玉県,群馬県,栃木県,茨城県」が表示されます。

f:id:m_kbou:20211223093914p:plain

[サンプル]:

上記で説明したファイルをダウンロードできます。ご自由にお使い下さい。

drive.google.com

配列の中から指定した文字列を含む要素を抽出する方法についての説明は以上です。

 

配列の中から指定した文字列を含まない要素を抽出する方法

配列の中から指定した文字列を含まない要素を抽出する方法について説明します。

[プログラミング例]:

Sub サンプル()

  Dim 配列(6) As String
  Dim 結果 As Variant

  配列(0) = "東京都"
  配列(1) = "神奈川県"
  配列(2) = "千葉県"
  配列(3) = "埼玉県"
  配列(4) = "群馬県"
  配列(5) = "栃木県"
  配列(6) = "茨城県"

  結果 = Filter(配列, "県", False)
  MsgBox Join(結果, ",")

End Sub

「最初に配列:配列(6)と変数:結果を定義します。次に配列:配列(6)に"東京都"、"神奈川県"、"千葉県"、"埼玉県"、"群馬県"、"栃木県"、"茨城県"を順番にセットします。Filter関数を使用して「県」を含まない文字列を抽出し、変数:結果にセットします。最後にJoin関数を使用して変数:結果の内容を「,」(カンマ)を区切りで結合し、MsgBoxで表示して下さい。」との意味になります。

f:id:m_kbou:20211223105836p:plain

※上記の記述例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方についてはこちらを参考にして下さい。 

[実行例]:

①<実行>ボタンには上記のプログラミング例のプログラムが登録されています。この<実行>ボタンをクリックします。(※ボタンの作り方やボタンにプログラムを割り当てるにはこちらを参考にして下さい。)

f:id:m_kbou:20211223093903p:plain

②結果は以下の様に表示されます。MsgBoxで「東京都」が表示されます。(※今回は抽出された結果が「東京都」のみであったため、「,」(カンマ)区切りはされませんでした。)

f:id:m_kbou:20211223105848p:plain

[サンプル]:

上記で説明したファイルをダウンロードできます。ご自由にお使い下さい。

drive.google.com

配列の中から指定した文字列を含まない要素を抽出する方法についての説明は以上です。

 

プログラミング(サンプル)

プログラミング事例を紹介します。

www.osiete-excelvba.work

 

おわりに

今回はFilter関数を使用した配列の中から指定した文字列を含む(又は含まない)要素を抽出する方法について説明しました。Filter関数で使用できる配列は一次元配列となりますので、使用時には注意して下さい。