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

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

  関連記事

文字列の横位置を取得・設定する(HorizontalAlignment プロパティ)

HorizontalAlignment プロパティ HorizontalAlig …

コメントの設定(Comments, Comment, AddComment, ClearComment)

コメントの設定 セルにコメントを新規に挿入するには、AddComment メソッ …

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

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

セルの文字列を取得(Text プロパティ)

Text プロパティ セルに表示されている文字列を取得します。Text プロパテ …

セル内部を参照(Interior プロパティ)

Interior プロパティ Interior プロパティで、セルの内部を参照し …

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

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

アクティブなセルを参照する(ActiveCell プロパティ)

ActiveCell プロパティ ActiveCell プロパティは、各ウィンド …

使用中のセル範囲を取得(UsedRange プロパティ)

UsedRange プロパティ UsedRange プロパティは、指定したワーク …

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

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

対象のセルが配列数式の一部かどうか(HasArray プロパティ)

HasArray プロパティ HasArray プロパティは、対象のセルが配列数 …