• ベストアンサー

VBAのfindメソッドでセルの"先頭の"特定の文字のあるセルを検索したい。

下記に示すようなテキストがワークシート(Sheet1)に 貼り付けてあります。 (Sheet1) A1:第一条  この法律は平和の為にある。 A2:第二条  この法律は戦争反対。 A3:2  すごいぞ日本。 A4:第二条の二  がんばれ日本。 A5:一  第二条は多分最強。 これから、【先頭が】"第*条*" というセルのみを検索したくて 以下のようなFindメソッドを組みました。 Sheets(Sheet1").Columns(1).Find("第*条*") ところが、結果として抽出されるのは 第一条  この法律は平和の為にある。 第二条  この法律は戦争反対。 第二条の二  がんばれ日本。 一  第二条は多分最強。 と、セルの先頭以外に"第*条*"が存在するセルも検索してしまいます。 検索結果が 第一条  この法律は平和の為にある。 第二条  この法律は戦争反対。 第二条の二  がんばれ日本。 となるようにするには、Findメソッドをどのように 組めばよいのでしょうか? どなたがご指導をお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • onlyrom
  • ベストアンサー率59% (228/384)
回答No.1

  Findメソッドの引数をちゃんと設定しましょう。   Sheets(Sheet1").Columns(1).Find("第*条*", , xlValues, xlWhole) 以上。  

Na0ya
質問者

お礼

迅速な対応有難うございます。 完全一致を使えばよかったのですね。 有難う御座いました。

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.2

Findを使わなくてよいなら、 Sub test2() For Each c In [A1:A5] If c.Value Like "第*条*" Then Debug.Print c.Value End If Next End Sub

Na0ya
質問者

補足

回答有難う御座います。 当案件、Findメソッドで解決しました。 Likeもいずれ使いこなしたいと思います。 以上、有難う御座いました。

すると、全ての回答が全文表示されます。

関連するQ&A

  • Excel VBAのFindメソッドについて

    Excel VBAを勉強中の者です。 Findメソッドで、数字の入ったF5セルからF28セルの範囲から、 1という数字の入ったセルを検索したいと思い Sub test() Dim xRange As Range Set xRange = Range("F5:F20").Find(What:=1, LookIn:=xlValues)   xRange.Select End sub としました。 しかし、このまま検索するとF6セルの12が検索されてしまいます。 他の数字では問題なく、対象の数字の先頭の数字が選択されます。 どうしてでしょうか? よろしくお願いします。

  • エクセルVBA セルを参照した文字検索

    どなたか教えてください。 ブックAのシート1の“A1”の値が、ブックBのシート1のA列に完全一致であるかどうかを検索し、あればそのセルをアクティブ、なければメッセージを返すという処理をVBAで行いたいです。 Findメソッドを使うのかなというのは、なんとなくわかるのですが、検索値が毎回異なり直接検索値をコードに記入できないこと、異なるブックで検索することなどにより、コードの記載方法がわかりません。 どなたか、わかる方お教えください。

  • ExcelVBA Findメソッドで検索のスタート位置について

    おせわになっております。 Findメソッドを用いて、先頭から順に値を検索しようとしています。 Set rngSearch = rngList.Find("ゴルフ", rngSearch, , xlPart) ↑ このような方法で、該当するものを一つ一つ探そうとしています。 つまり、仮に一列目で見つかったら、次は二列目以降から探そうと しています。 FindNextなどを使用しないのは、連続で求めるためではなく、 ボタンを押したときに一つずつ検索するからです。 しかし、この書式ではスタート地点にした、次のセルから検索する はずが、スタート地点に指定したセルから検索してしまい、 何度行っても同じセルばかりを検索して返してしまいます。 Offsetなどで一行ずつずらしても、同じ場所からしか検索が 始まりません。 これはなぜなのでしょうか? 念のため、他のメソッドなどでは決してrngSearch は代入等の 操作はしておりません。 ちなみに、同じメソッドの中で同じ書式を繰り返すと   Set rngSearch = rngList.Find("ゴルフ", rngSearch, , xlPart) MsgBox rngSearch.Value   Set rngSearch = rngList.Find("ゴルフ", rngSearch, , xlPart) MsgBox rngSearch.Value   Set rngSearch = rngList.Find("ゴルフ", rngSearch, , xlPart) MsgBox rngSearch.Value   Set rngSearch = rngList.Find("ゴルフ", rngSearch, , xlPart) MsgBox rngSearch.Value   … うまくいくようなのです。一度でもメソッドを抜けるとうまくいか なくなるような感じです。 以上、わかりづらい説明で大変申し訳ありませんが、なにとぞお願い 致します。

  • vbaのFindメソッドで取得するにはどうすれば

    A1に「あ」B1に「い」と入れて、 A2に「=A1&B1」としました。 この時、A2は「あい」と表示されます。 今回やりたいことは、 Sub test() Debug.Print Cells.Find(What:=" あい").Row End Sub で、2を返したいのですが、 実行時エラー91になってしまいます。 セル内に該当の文字列がないからだと思いますが、 数式でつなげた文字列を、 vbaのFindメソッドで取得するにはどうすれば良いでしょうか?

  • vbaにて特定の文字を検索し、置換して、セルの色を変えるには?

    エクセルの複数セル内に文章が入っているのですが、その中で「田中」という文字を検索して、見つかれば、「山田」という文字に置換し、セルの色を変えたいのですが、findメソッドやreplaceを使えばなんとなくできそうな感じがするのですが、どうしてもうまくいきません。 どなたかご存知の方がいればご教示ください。 よろしくお願いします。

  • 【excelVBA】Findメソッドで検索対象を複数列

    findメソッドで、検索対象を複数列&検索条件を複数にしたいのですが、可能でしょうか? イメージ的には、下のようなデータが入っているシートから、 AとB列を条件にしてC列の同じ行の値を取得したいのです。 A |B |C 00|00|01 00|00|02 00|01|01 Range("A:B").Find(what:="00"&"00"・・・)のような感じです。 →期待される取得結果は01と02です。 今のところ方法がおもいつかないので、 (1)A列を条件にしB列 (2)(1)のB列を条件にしC列 と二段階で取得するしかないかな~と思っています。 このような処理は不可能でしょうか?また可能ならばその記述方法をご教授ください。よろしくお願いします。

  • Findを使用して、データが入力されているセルのみを検索

     | A | ------- 1| 123 | 2|    | 3| 456 | 4| 789 | Excel2003を使用しています。 上記のデータをFindを使用して、データが入力されているセルのみを検索したく、 Set C = Worksheets(AAA).Range("A:A").Find(<>"", LookIn:=xlValues) など、試してみたのですが、上手くいきません。 『Findを使用して、データが入力されているセルのみを検索』する事じたいが無理なのでしょうか。  ご教授の程、お願いします。

  • VBAマクロ・・同一セルの検索と検索したセルの操作

    VBAマクロ・・同一セルの検索と検索したセルの操作  VBAのほぼ初心者です。  決められたセル(たとえばE100)に入力された文字列と同一の文字列を その列内の上(E1~E99)で検索する。 そして、検索できれば(たとえばE30)そのセルがある行(行30)を削除する。 なお、複数検索されれば、検索されたすべてのセルに対応する行を削除する。  というようなことをVBAのマクロで作成したいです。 FindメソッドとDo..Loop Whileを使って試行錯誤してみたのですが、うまくいきません。。  いい方法があれば、是非教えていただきたいです。  どうぞよろしくお願いいたします。

  • VBA 先頭一文字だけ残し、色を無しにしたいです

    office365です。 A列に文字が入っており、必ず先頭は何かしらの記号が入っています。 セルには、塗りつぶし書式がかかっている個所があり、色は「黄」で統一です。 A列を検索し、セルに塗りつぶしがされていた場合、そのセルの先頭の文字だけ残して削除し、かつ色無し。 色が塗りつぶしされていないセルは、変化無しです。 という命令を作りたいのですが、どう作ればいいか戸惑っています。

  • 改行のあるセルをFindで検索したい

    エクセルです。 A1セルに 「あああ」と入力して、ALT+Enterで改行し、「いいい」と入力しました。 VBAで Sub test() MsgBox Cells.Find(What:="あああ" & Chr(13) & "いいい", LookAt:=xlWhole).Address End Sub として、セル番地を取得したいのですが オブジェクト変数または With ブロック変数が設定されていません。(Error 91) と言うエラーが返ってきてしまいます。 $a$1が返ってきてほしいのですが。 Sub test() Debug.Print Cells.Find(What:="あああ*", LookAt:=xlWhole).Address End Sub で、$a$1が返ってきますが、 できれば改行含む検索ができるようになりたいです。

このQ&Aのポイント
  • 新品のDCP-J528Nプリンターを購入したが、引越しの際にスターターインクを紛失してしまい、プリンターが起動しなくなった。どうすればいいか相談したい。
  • DCP-J528Nの新品購入後、引越しの際にスターターインクが紛失してしまい、プリンターが起動しなくなった。困っています。
  • DCP-J528Nプリンターの起動プロブレム。新品を購入したが、引越しの際にスターターインクを失くし、プリンターが使えなくなった。対処方法を教えてほしい。
回答を見る

専門家に質問してみよう