Step46 AutoFilterを使って複数条件で抽出する : Excel請求書

品名コード・品番・品名から検索文字をワイルドカードで指定し、複数条件で抽出します。それとユーザーフォームを閉じるVBAコードと、検索文字の保存と再表示のVBAコードを作成します。




Homeに戻る > Excelでアプリケーションソフト3 > 請求書アプリ

作成画面

■コード・品番・品名抽出フォームの変更

前回テキストボックスのラベルを「キーワード1~3」にしていましたが、そうすると複雑すぎるので、それぞれの項目から1つのキーワードで抽出できるようにしました。
ラベルの「キーワード1~3」を「コード」「品番」「品名」に変更してください。
コード・品番・品名抽出フォーム

■フォームを閉じるボタンのVBAコード

Private Sub CommandButton2_Click()
    Unload UserForm2
End Sub

■入力されたテキストボックスのデータを保存しておく

Private Sub UserForm_Terminate()
    Worksheets("一覧").Range("G1") = Me.TextBox1
    Worksheets("一覧").Range("H1") = Me.TextBox2
    Worksheets("一覧").Range("I1") = Me.TextBox3
End Sub

■保存していたデータをフォームが開く時に再表示する

Private Sub UserForm_Initialize()
    Me.TextBox1 = Worksheets("一覧").Range("G1")
    Me.TextBox2 = Worksheets("一覧").Range("H1")
    Me.TextBox3 = Worksheets("一覧").Range("I1")
End Sub

セルG1・H1・I1に保存するようにしましたので、分からないようにこのセルの文字色を白に設定してください。

■AutoFilterを使って複数条件で抽出するVBAコード

Private Sub CommandButton1_Click()
    Worksheets("一覧").Range("$B$4:$J$4").AutoFilter Field:=3, Criteria1:="*" & Me.TextBox1 & "*"
    Worksheets("一覧").Range("$B$4:$J$4").AutoFilter Field:=4, Criteria1:="*" & Me.TextBox2 & "*"
    Worksheets("一覧").Range("$B$4:$J$4").AutoFilter Field:=5, Criteria1:="*" & Me.TextBox3 & "*"
End Sub

■複数条件で抽出を実行する

下の請求書一覧の矢印データは、抽出テスト用に分かり易いデータに変更しています。

コード・品番・品名それぞれのキーワードで抽出します。
複数条件で抽出を実行する

条件に合ったデータがワイルドカードで無事抽出できました。
条件に合ったデータがワイルドカードで無事抽出できた

コード・品名にはキーワードを指定し、品番は空白で抽出します。
コード・品名にはキーワードを指定し、品番は空白で抽出

品番を除いた条件で無事抽出できました。
品番を除いた条件で無事抽出できた

[関連リンク]

データを抽出する(AutoFilter)
2つの条件でデータを抽出する(AutoFilter)
オートフィルタの実行と解除
ユーザーフォームを開く、閉じる

Homeに戻る > Excelでアプリケーションソフト3 > 請求書アプリ

■■■
このサイトの内容を利用して発生した、いかなる問題にも一切責任は負いませんのでご了承下さい
■■■
当ホームページに掲載されているあらゆる内容の無許可転載・転用を禁止します


Copyright (c) Excel-Excel ! All rights reserved