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 を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

  関連記事

網かけ(パターン)の取得・設定(Pattern プロパティ)

網かけ(パターン)を取得・設定する セルの背景に網かけ(パターン)を設定したり、 …

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

HorizontalAlignment プロパティ HorizontalAlig …

ハイパーリンク(Hyperlink オブジェクトのメソッド)

Hyperlink オブジェクトのメソッド Hyperlinks コレクション …

数式を設定・取得する(Formula プロパティ・FormulaR1C1 プロパティ)

Formula プロパティ(FormulaR1C1 プロパティ) Formula …

セルを参照する(Range プロパティ)

Range プロパティ 任意のセルにアクセスするには Range プロパティを使 …

対象のセルが直接参照しているセル全てを取得(DirectPrecedents プロパティ)

DirectPrecedents プロパティ DirectPrecedents …

入力規則(Validation オブジェクト)

Validation オブジェクト セル範囲に入力できる値を制限するには 入力規 …

StandardWidth プロパティ・StandardHeight プロパティ 例01
セル幅・高さの既定値(StandardHeight プロパティ・StandardWidth プロパティ)

StandardHeight プロパティ・StandardWidth プロパティ …

セルに値を設定する・セルの値を参照する(Value プロパティ)

Value プロパティ Value プロパティは、セルの値を取得したり、値を設定 …

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

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