教えて!ExcelVBA!

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

【ExcelVBA プログラミング】(関数49)Filter関数のプログラミング例を教えて!

f:id:m_kbou:20211227194418p:plain

Filter関数を使用したプログラミング例を紹介します。

 

 

例題

都道府県欄(A列)に都道府県名が記述されています。抽出条件(B2セル)には「道・都・府・県」が選択できる様にプルダウンリストをセットします。この抽出条件からいずれかを選択し、<実行>ボタンをクリックします。その結果、抽出条件で選択した内容を含む都道府県名を抽出し、結果欄(C列)に表示します。

[実行前]:

f:id:m_kbou:20211227194459p:plain

[実行後]:

f:id:m_kbou:20211227194512p:plain

 

プログラミング

プログラミングは以下の通りとなります。

[記述例]:

Sub サンプル()

  '↓処理①
  Dim 番号 As Long
  Dim 配列(7) As String
  Dim 結果 As Variant
  Dim 行 As Long
  Dim 都道府県 As Variant

  '↓処理②
  If (Trim(Range("B2")) = "") Then
    MsgBox "抽出条件を選択して下さい。", 16, "メッセージ"
    Exit Sub
  End If

  '↓処理③
  Range("C2:C10").ClearContents

  '↓処理④
  For 番号 = 0 To 7
    配列(番号) = Range("A" & 番号 + 2)
  Next

  '↓処理⑤
  結果 = Filter(配列, Range("B2"), True)

  '↓処理⑥
  行 = 2
  For Each 都道府県 In 結果
    Range("C" & 行) = 都道府県
    行 = 行 + 1
  Next

End Sub

処理①:変数定義
変数を定義します。

処理②:抽出条件の選択
B2セルの抽出条件が選択されている事を確認します。選択されていない場合は、”抽出条件を選択して下さい。”をMsgBoxで表示し、処理を中止します。

処理③:結果欄クリア
C列の2行目~10行目までをクリアします。

処理④:都道府県名を配列にセット
For~Next文を使用した2行目~9行目までの都道府県名を変数:配列にセットします。

処理⑤:抽出条件に一致した都道府県名を抽出
Filter関数を使用し、上記の処理④でセットした変数:配列から抽出条件を含む都道府県名を抽出し変数:結果にセットします。

処理⑥:抽出した都道府県名を結果欄にセット
上記の処理⑤で抽出した都道府県名を、For~Next文を使用してC列にセットします。

との内容になります。

f:id:m_kbou:20211227194528p:plain

※上記の記述例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方についてはこちらを参考にして下さい。また、ボタンにプログラムを割り当てるにはこちらを参考にして下さい。

 

ダウンロード

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

drive.google.com