条件を設定し、オートフィルターでデータ抽出する方法です。
- 抽出条件:含む、で始まる、で終わる
- フィルターの対象となるフィールド:1列目~4列目を選択可能
- 使い方:抽出条件とフィールドの選択可能なオートフィルターの使い方
- 基本操作はこちらを確認してください → オートフィルター抽出と解除の基本
ワークシートの設定
(1)以下の状態のワークシートを用意します。
セルB2は検索文字を入力します。
(2)リボン [ 開発 ] > [ コントロール ] グループ > [ 挿入 ] > [ ActiveXコントロール ] > [ コマンドボタン ]をクリックします。
コマンドボタンが設置された状態です。
(3)コマンドボタンを選択した状態で「プロパティ」をクリックします。
(4)オブジェクト名等はそのままでも使えますが、長いので変更しました。
- オブジェクト名:Cmd1
- Caption:抽出
コマンドボタンのカラーとフォントの色も変更しています。
(5)「解除」のコマンドボタンを設置します。「抽出」と同じ方法です。
- オブジェクト名:Cmd2
- Caption:解除
オプションボタンを3つ設置します。
(6)リボン [ 開発 ] > [ コントロール ] グループ > [ 挿入 ] > [ ActiveXコントロール ] > [ オプションボタン ]をクリックします。
(7)オプションボタンのプロパティを設定します。
- 「含む」のオブジェクト名:op1
- 「で始まる」のオブジェクト名:op2
- 「で終わる」のオブジェクト名:op3
フィルターの対象となるフィールドの設定です。セルA2にデータの入力規則を設定します。
(8)リボン [ データ ] > [ データツール ] グループ > [ データの入力規則 ] を選択します。
設定タブ
- 入力の種類:整数
- データ:次の値の間
- 最小値:1
- 最大値:4
エラーメッセージ
- スタイル:停止
タイトルとエラーメッセージは好みで変えてください。
サンプルコード
引数を使った例です。
コマンドボタン「抽出」
(1)リボン [ 開発 ] > [コントロール ] グループ > [ デザインモード ] を選択します。
(2)コマンドボタン「抽出」をダブルクリックします。
Private Sub Cmd1_Click() Dim mName As String Dim cNo As Long mName = Range("B2") cNo = Range("A2") If cNo = 0 Then MsgBox "セルA2に1~4の数字を入力してください", vbCritical Exit Sub End If Call Chushutu(cNo, mName) End Sub
列番号の変数「cNo」はあえてLongを使っています。
コマンドボタン「解除」
(1)リボン [ 開発 ] > [コントロール ] グループ > [ デザインモード ] を選択します。
(2)コマンドボタン「解除」をダブルクリックします。
Private Sub Cmd2_Click() Call Kaijo End Sub
標準モジュール
標準モジュールを挿入します。
抽出
抽出の例です。
Sub Chushutu(ByVal cN As Long, mN As String) Dim rCount As Long With ActiveSheet Select Case True Case .op1 Range("A4").AutoFilter cN, "*" & mN & "*" Case .op2 Range("A4").AutoFilter cN, mN & "*" Case .op3 Range("A4").AutoFilter cN, "*" & mN End Select End With rCount = Range(Range("A1"), Cells(Rows.Count, 1).End(xlUp)).SpecialCells(xlCellTypeVisible).Count If rCount = 4 Then ActiveSheet.AutoFilterMode = False MsgBox "対象データはありません", vbInformation Exit Sub End If MsgBox rCount - 4 & "件です。", vbInformation End Sub
Autofilterメゾットの基本です。
セル範囲.AutoFilter 各種引数:=値
抽出の例では、引数の書き方を省略しています。
以下はAutofilterメゾットの引数です。
引数 | 説明 |
---|---|
Field | フィルターの対象となるフィールド番号。整数で指定します。一番左が1です。 |
Criteria1 | 抽出条件 |
Operator | フィルターの種類。XlAutoFilterOperator の定数で指定します。 |
Criteria2 | 2番目の抽出条件 |
VisibleDropDown | オートフィルターの矢印の表示。True:表示、False:非表示 |
解除
解除の例です。
Sub Kaijo() ActiveSheet.AutoFilterMode = False End Sub