Excel VBAを使用した特定のキーワードリストに基づくフィルタリングの実践方法

Excel VBA(Visual Basic for Applications)は、Microsoft Excel内でマクロプログラミングを行うための言語です。この記事では、Excel VBAを用いて、特定のキーワードリストに基づいたフィルタリングの方法をご紹介します。コード例やその詳細な解説、そしてさらに深い理解と実用に役立つ応用例も提供します。

目次

Excel VBAの基本

Excel VBA(Visual Basic for Applications)は、Microsoft Excelに組み込まれたプログラミング言語です。これを用いると、単純作業の自動化だけでなく、高度なデータ分析やレポート作成も可能になります。

そもそも、どこにVBAコードを書いて、どう実行すれば良いのか分からない場合は、以下の記事をご参照ください。

基本的なフィルタリング処理

Excel VBAを使用することで、特定のキーワードを含むデータを効率よくフィルタリングすることが可能です。

サンプルコード

以下は、特定のキーワードリスト(`keywordList`)を用いて、範囲内(`A1:A10`)のデータをフィルタリングするサンプルコードです。


Sub FilterByKeywordList()
    Dim keywordList As Variant
    Dim rng As Range
    
    ' キーワードリストを定義
    keywordList = Array("Apple", "Banana", "Cherry")
    
    ' 範囲を定義
    Set rng = Worksheets("Sheet1").Range("A1:A10")
    
    ' フィルタリング処理
    rng.AutoFilter Field:=1, Criteria1:=keywordList, Operator:=xlFilterValues
End Sub

コード解説

– `keywordList`: フィルタリングに使用するキーワードを格納した配列です。
– `rng`: フィルタリング対象となるセル範囲を設定しています。
– `rng.AutoFilter`: AutoFilterメソッドを使用して、フィルタリングを実施しています。

応用例

応用例1:複数列でのフィルタリング

一つのキーワードリストを用いて、複数の列でフィルタリングを行う方法です。


Sub MultiColumnFilter()
    Dim keywordList As Variant
    Dim rng As Range
    
    ' キーワードリストを定義
    keywordList = Array("Apple", "Banana", "Cherry")
    
    ' 範囲を定義
    Set rng = Worksheets("Sheet1").Range("A1:B10")
    
    ' 複数列でのフィルタリング処理
    rng.AutoFilter Field:=1, Criteria1:=keywordList, Operator:=xlFilterValues
    rng.AutoFilter Field:=2, Criteria1:=">=10", Operator:=xlAnd
End Sub

応用例2:日付によるフィルタリング

特定の日付範囲内のデータだけをフィルタリングする方法です。


Sub DateFilter()
    Dim rng As Range
    
    ' 範囲を定義
    Set rng = Worksheets("Sheet1").Range("A1:A10")
    
    ' 日付でのフィルタリング処理
    rng.AutoFilter Field:=1, Criteria1:=">=2023/01/01", Operator:=xlAnd, Criteria2:="<=2023/12/31"
End Sub

応用例3:外部ファイルからキーワードをインポート

テキストファイルからキーワードリストをインポートして、フィルタリングを行う方法です。


Sub ImportKeywordAndFilter()
    Dim keywordList() As String
    Dim txtLine As String
    Dim i As Integer
    Dim rng As Range
    
    ' キーワードリストをテキストファイルからインポート
    Open "C:\path\to\keyword.txt" For Input As #1
    i = 0
    Do Until EOF(1)
        Line Input #1, txtLine
        ReDim Preserve keywordList(i)
        keywordList(i) = txtLine
        i = i + 1
    Loop
    Close #1
    
    ' 範囲を定義
    Set rng = Worksheets("Sheet1").Range("A1:A10")
    
    ' フィルタリング処理
    rng.AutoFilter Field:=1, Criteria1:=keywordList, Operator:=xlFilterValues
End Sub

まとめ

Excel VBAを利用することで、特定のキーワードリストに基づく高度なフィルタリングが可能になります。基本的な使い方から応用例まで、多様なニーズに対応できるでしょう。

VBAも良いけどパワークエリも良い

VBAの解説をしてきましたが、VBAは正直煩雑でメンテナンス性が悪いです。最近はモダンExcelと呼ばれるパワークエリやパワーピボットへのシフトが進んできています。本サイトでもパワークエリの特集をしており、サンプルデータを含む全11回の学習コンテンツでパワークエリを習得することができます。

クリックするとパワークエリの全11講座が表示されます。

パワーピボットの記事はありません。興味がある場合は、書籍で学んでみてください

コメント

コメントする

目次