条件を設定し、オートフィルターでデータ抽出する方法です。
- 抽出条件:含む、で始まる、で終わる
- フィルターの対象となるフィールド: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
