ワイルドカードを使って検索(Find メソッド)
Find メソッド
指定したセル範囲内の特定の情報を含むセルを検索します。
【書式】
object.Find ( what [, after, lookin, lookat, searchorder, searchdirection, matchcase, matchbyte, searchformat ] )
引数・戻り値
- object ・・・ 対象となる Range オブジェクトを指定します。
- what ・・・ 検索する文字列、値など、セル内のデータに該当する値を指定します。省略不可。
- after ・・・ object で指定したセル範囲内のセルの1つを指定します。このセルの次のセルから検索が開始されます。このセル自体は、指定範囲全体を検索し戻ってくるまでは検索されません。省略すると、対象のセル範囲左上端セルが検索開始点となります。
- lookin ・・・ 検索対象となる定数 xlComments(コメント)、xlFormulas(数式)、xlValues(値)のいずれかを指定します。
- lookat ・・・ 検索条件を表す定数 xlWhole(完全一致のセルを検索)、xlPart(検索文字列を含むセルを検索)のいずれかを指定します。
- searchorder ・・・ 検索時に行列どちらを優先して検索するかを表す定数 xlByRows(行優先)、xlByColumns(列優先)のいずれかを指定します。
- searchdirection ・・・ 検索方向を表す定数 xlNext(後方検索)、xlPrevious(前方検索)のいずれかを指定します。
- matchcase ・・・ 大文字と小文字を区別する場合は、True を、しない場合は False を指定します。既定値は、False です。
- matchbyte ・・・ 半角文字、全角文字を区別する場合は、True を、しない場合は False を指定します。既定値は、False です。
- searchformat ・・・ CellFormat オブジェクト に設定された書式を検索する場合は、True を、しない場合は、False を指定します。既定値は、False です。
- 戻り値 ・・・ 検索の結果、条件を満たすセルが見つかったらその先頭のセルを表す Range オブジェクトを返します。見つからなかった場合は、Nothing を返します。
ワイルドカード
引数 what には、以下のワイルドカードを指定することができます。
| ? | 任意の1文字 | 
| * | 任意の文字列 | 
Find メソッド ワイルドカード(?)使用例
サンプルVBAソース
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | Sub Sample01_Find_Wildcard()     Dim myRng As Range     Dim firstCell As Range     Dim str As String     Set myRng = Cells.Find(what:="??代", LookAt:=xlWhole)     If myRng Is Nothing Then         MsgBox "Nothing"         Exit Sub     Else         Set firstCell = myRng     End If     Do         str = str & myRng.Value & vbLf         Set myRng = Cells.FindNext(myRng)         If firstCell.Address = myRng.Address Then Exit Do     Loop     MsgBox str End Sub | 
Find メソッド ワイルドカード(?)使用例 実行結果
Find メソッド ワイルドカード(*)使用例
サンプルVBAソース
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | Sub Sample02_Find_Wildcard()     Dim myRng As Range     Dim firstCell As Range     Dim str As String     Set myRng = Cells.Find(what:="*費", LookAt:=xlWhole)     If myRng Is Nothing Then         MsgBox "Nothing"         Exit Sub     Else         Set firstCell = myRng     End If     Do         str = str & myRng.Value & vbLf         Set myRng = Cells.FindNext(myRng)         If firstCell.Address = myRng.Address Then Exit Do     Loop     MsgBox str End Sub | 
Find メソッド ワイルドカード(*)使用例 実行結果
関連記事
-  
              
- 
      入力規則(Validation オブジェクト)Validation オブジェクト セル範囲に入力できる値を制限するには 入力規 … 
-  
              
- 
      セルを参照する(Range プロパティ)Range プロパティ 任意のセルにアクセスするには Range プロパティを使 … 
-  
              
- 
      オートフィルタの状況を確認(AutoFilterMode, FilterMode)AutoFilterMode プロパティ AutoFilterMode プロパテ … 
-  
              
- 
      指定した行数・列数移動したセル・セル範囲を参照(Offset プロパティ)Offset プロパティ Offset プロパティは、基準となるセル・セル範囲か … 
-  
              
- 
      セル・セル範囲を切り取る(Cut メソッド)Cut メソッド Cut メソッドは、指定したセル範囲を切り取り、引数に指定した … 
-  
              
- 
      VBA で、ワークシート関数を使用(WorksheetFunction プロパティ)VBA で、ワークシと関数を使用 VBA から、ワークシート関数を呼び出す場合、 … 
-  
              
- 
      対象のセルが直接参照しているセル全てを取得(DirectPrecedents プロパティ)DirectPrecedents プロパティ DirectPrecedents … 
-  
              
- 
      対象のセルを参照している全てのセルを取得(Dependents プロパティ)Dependents プロパティ Dependents プロパティは、対象のセル … 
-  
              
- 
      セルをアクティブにする・セルを選択する(Activate, Select)セルをアクティブにする・選択する 【書式:セルをアクティブにする】 object … 
-  
              
- 
      別シートのセルを選択(Goto メソッド / PreviousSelections プロパティ)Goto メソッド 次の例のように、1 行で、Activate メソッド や S … 
 
        


Comment
こんにちわ。素人ながらいつも参考にさせて頂いただいております。
1つお聞きしたいのですが、findメソッドの中でのワイルドカードでは、『*、?』しか使えないのでしょうか。
半角カタカナが入っているセルのみを抽出したい場合、Like演算子のように[ヲ-°]とすることはできないのでしょうか。
コメントありがとうございます。
私が調べた限りでは、Find で使用できるのは「*,?」だけのようです。(違っていたらすみません)
半角カタカナが入っているセルを検索するには、やはり「Like演算子」を使用するか「RegExp」を使用するのが良いと思います。
‘Like演算子を使った例
Sub Sample_Like()
End Sub
‘正規表現を使った例
Sub Sample_RegExp()
End Sub
(※「RegExp」に関しては現在作成途中ですが、VBA で正規表現を使う(RegExp オブジェクト)、VBA で正規表現を使う(RegExp オブジェクトのプロパティ) に載せています。)
返信ありがとうございます。
なるほど。分かりました。
大変参考になりました!