ExcelWork.info

Excel(エクセル)のマクロ・VBA・関数・操作などのメモ

ワイルドカードを使って検索(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ソース


Find メソッド ワイルドカード(?)使用例 実行結果

Find メソッド ワイルドカード 使用例02



Find メソッド ワイルドカード(*)使用例

サンプルVBAソース


Find メソッド ワイルドカード(*)使用例 実行結果

Find メソッド ワイルドカード 使用例02


 - セルの操作 , , , , ,

Comment

  1. おおさき より:

    こんにちわ。素人ながらいつも参考にさせて頂いただいております。

    1つお聞きしたいのですが、findメソッドの中でのワイルドカードでは、『*、?』しか使えないのでしょうか。

    半角カタカナが入っているセルのみを抽出したい場合、Like演算子のように[ヲ-°]とすることはできないのでしょうか。

    • サイト管理人 より:

      コメントありがとうございます。
      私が調べた限りでは、Find で使用できるのは「*,?」だけのようです。(違っていたらすみません)
      半角カタカナが入っているセルを検索するには、やはり「Like演算子」を使用するか「RegExp」を使用するのが良いと思います。

      ‘Like演算子を使った例
      Sub Sample_Like()

      Dim v As Range
      For Each v In Range(“A1:E20”)
      If v.Value Like “*[ヲ-゚]*” Then
      Debug.Print v.Address
      End If
      Next v

      End Sub

      ‘正規表現を使った例
      Sub Sample_RegExp()

      Dim re As Object
      Dim v As Range
      Set re = CreateObject(“VBScript.RegExp”)
      For Each v In Range(“A1:E20”)
      re.Pattern = “[ヲ-゚]”
      If re.test(v) Then
      Debug.Print v.Address
      End If
      Next v

      End Sub

      (※「RegExp」に関しては現在作成途中ですが、VBA で正規表現を使う(RegExp オブジェクト)VBA で正規表現を使う(RegExp オブジェクトのプロパティ) に載せています。)

  2. おおさき より:

    返信ありがとうございます。
    なるほど。分かりました。

    大変参考になりました!

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

  関連記事

列幅を取得・設定・する(ColumnWidth プロパティ)

ColumnWidth プロパティ ColumnWidth プロパティは、対象セ …

セルの表示形式を設定・取得する(NumberFormat プロパティ)

NumberFormat プロパティ NumberFormat プロパティは、現 …

任意の行または列を参照(Rows プロパティ,Columns プロパティ)

Rows プロパティ・Columns プロパティ Rows プロパティは、オブジ …

列名・列番号取得 使用例
列名を取得、列番号を取得(Address プロパティ,Column プロパティ)

列番号を取得する セル番地(「A1」や「B3」)や列名(「A」「B」「C」&#8 …

別シートのセルを選択(Goto メソッド / PreviousSelections プロパティ)

Goto メソッド 次の例のように、1 行で、Activate メソッド や S …

Stop
入力規則(リストで制限する)Validation.Add メソッド

ドロップダウンリストで入力値を制限 Validation.Add メソッド(また …

RemoveDuplicates メソッド 使用例1a
重複するデータを削除(RemoveDuplicates メソッド)

RemoveDuplicates メソッド 指定したセル範囲から重複データを含む …

ReferenceStyle プロパティ 例01
A1参照形式、R1C1参照形式の設定・取得(ReferenceStyle プロパティ)

ReferenceStyle プロパティ ReferenceStyle プロパテ …

終端セルを参照する(End プロパティ)

End プロパティ End プロパティは、基準となるセルが含まれる領域の指定した …

並べ替え(Sort メソッド)

Sort メソッド 任意のセル範囲内で、並べ替えを行います。引数で、並べ替えの条 …