ワイルドカードを使って検索(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 メソッド ワイルドカード(*)使用例 実行結果
関連記事
-
セルが結合セルの一部である場合、その結合セルの範囲を取得(MergeArea プロパティ)
MergeArea プロパティ MergeArea プロパティは、指定したセルが …
-
セルに値を設定する・セルの値を参照する(Value2 プロパティ)
Value2 プロパティ Value プロパティとの違いは、Value2 プロパ …
-
指定した条件に一致するセルを取得(SpecialCells メソッド)
SpecialCells メソッド SpecialCells メソッドは、指定し …
-
数式を非表示にする(FormulaHidden プロパティ)
FormulaHidden プロパティ 数式が入力されたセルを選択するとその数式 …
-
セル内部を参照(Interior プロパティ)
Interior プロパティ Interior プロパティで、セルの内部を参照し …
-
並べ替え(Sort メソッド)
Sort メソッド 任意のセル範囲内で、並べ替えを行います。引数で、並べ替えの条 …
-
A1参照形式、R1C1参照形式の設定・取得(ReferenceStyle プロパティ)
ReferenceStyle プロパティ ReferenceStyle プロパテ …
-
終端セルを参照する(End プロパティ)
End プロパティ End プロパティは、基準となるセルが含まれる領域の指定した …
-
オートフィルタ(日付・時刻のグループ化)AutoFilter メソッド
グループ化された日付や時刻で、レコードを抽出する Excel 2007 から日付 …
-
セルのロック(Locked プロパティ)
セルのロック(Locked プロパティ) Locked プロパティで、セルのロッ …
Comment
こんにちわ。素人ながらいつも参考にさせて頂いただいております。
1つお聞きしたいのですが、findメソッドの中でのワイルドカードでは、『*、?』しか使えないのでしょうか。
半角カタカナが入っているセルのみを抽出したい場合、Like演算子のように[ヲ-°]とすることはできないのでしょうか。
コメントありがとうございます。
私が調べた限りでは、Find で使用できるのは「*,?」だけのようです。(違っていたらすみません)
半角カタカナが入っているセルを検索するには、やはり「Like演算子」を使用するか「RegExp」を使用するのが良いと思います。
‘Like演算子を使った例
Sub Sample_Like()
End Sub
‘正規表現を使った例
Sub Sample_RegExp()
End Sub
(※「RegExp」に関しては現在作成途中ですが、VBA で正規表現を使う(RegExp オブジェクト)、VBA で正規表現を使う(RegExp オブジェクトのプロパティ) に載せています。)
返信ありがとうございます。
なるほど。分かりました。
大変参考になりました!