日程Fit|「いつ空いてますか?」の往復はもう不要。候補日を選んでURLを送るだけ|登録不要|今すぐ無料で使う →

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

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

日程Fit。無料・登録不要。「いつ空いてる?」を、ひとつのリンクで。リンクを送って、○△×でかんたん日程調整。無料で日程を作る。
目次

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

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

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次