ワイルドカードを使って検索(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 メソッド ワイルドカード(*)使用例 実行結果
関連記事
-
文字列の一部の書式を変更(Characters プロパティ)
文字列の一部を参照(Characters プロパティ) Characters プ …
-
外枠罫線の設定(BorderAround メソッド)
外枠罫線の設定 罫線の設定には、Borders プロパティを使用しますが、範囲内 …
-
任意のセルを含む行または列全体を参照(EntireRow プロパティ,EntireColumn プロパティ)
EntireRow プロパティ・EntireColumn プロパティ Entir …
-
テーマカラーで網かけ(パターン)の色の取得・設定(PatternThemeColor プロパティ・PatternTintAndShade プロパティ)
PatternThemeColor プロパティ・PatternTintAndSh …
-
セル・セル範囲に名前を定義・削除(Name プロパティ・Names コレクション)
セル・セル範囲に名前を定義(Name プロパティ) Range オブジェクトのN …
-
引数に指定したセル範囲の共通のセル範囲を取得(Intersect メソッド)
Intersect メソッド Intersect メソッドは、引数に指定したセル …
-
配列数式を取得または設定する(FormulaArray プロパティ)
FormulaArray プロパティ FormulaArray プロパティは、対 …
-
入力規則(日本語入力)Validation オブジェクト,IMEMode プロパティ
IMEMode プロパティ Validation.IMEMode プロパティ を …
-
現在選択されているセルを参照(RangeSelection プロパティ)
RangeSelection プロパティ 実際に何が選択されているかにかかわらず …
-
文字列の横位置を取得・設定する(HorizontalAlignment プロパティ)
HorizontalAlignment プロパティ HorizontalAlig …
Comment
こんにちわ。素人ながらいつも参考にさせて頂いただいております。
1つお聞きしたいのですが、findメソッドの中でのワイルドカードでは、『*、?』しか使えないのでしょうか。
半角カタカナが入っているセルのみを抽出したい場合、Like演算子のように[ヲ-°]とすることはできないのでしょうか。
コメントありがとうございます。
私が調べた限りでは、Find で使用できるのは「*,?」だけのようです。(違っていたらすみません)
半角カタカナが入っているセルを検索するには、やはり「Like演算子」を使用するか「RegExp」を使用するのが良いと思います。
‘Like演算子を使った例
Sub Sample_Like()
End Sub
‘正規表現を使った例
Sub Sample_RegExp()
End Sub
(※「RegExp」に関しては現在作成途中ですが、VBA で正規表現を使う(RegExp オブジェクト)、VBA で正規表現を使う(RegExp オブジェクトのプロパティ) に載せています。)
返信ありがとうございます。
なるほど。分かりました。
大変参考になりました!