• ベストアンサー

エクセルのマクロでFindメソッドを使い、複数の文字列を検索するには?

表題のとおり、エクセルのマクロを使い、複数の文字列(どちらか)を検索するにはどのように記述したら良いのでしょうか? Find("文字列1" Or "文字列2")で出来ると思ったのですが、エラーが出てしまいます。 皆様の知恵をお貸し下さい。 よろしくお願いいたします。

noname#82622
noname#82622

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

  • ベストアンサー
  • Ce_faci
  • ベストアンサー率36% (46/127)
回答No.1

こんばんわ こんなのはいかがでしょう? インプットボックス2つにそれぞれ検索したいものを入れてください。 検索範囲はセルA2:Z100です。 Dim w1 As Variant, w2 As Variant Sub 探し物は() w1 = InputBox("CAN I HELP YOU?") w2 = InputBox("MORE?") Sheets(1).Range("A2:Z100").Select On Error GoTo ESC Cells.Find(What:=w1).Activate Exit Sub ESC: 何ですか (w2) End Sub Private Sub 何ですか(ByRef w2 As Variant) On Error GoTo ES2 Cells.Find(What:=w2).Activate Exit Sub ES2: MsgBox "NOTHInG" End Sub

noname#82622
質問者

お礼

マクロまで組んで頂き、ありがとうございました。 勉強の為に、ヘルプを駆使して読んでみます。

その他の回答 (1)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんばんは。 >Find("文字列1" Or "文字列2")で出来ると思ったのですが いいえ出来ません。 最終目的は何か分かりませんが、Find メソッドには、そのような機能はない以上は、一つずつする方法しかありません。ただ、単に、検索するだけなら、マクロは関係ないと思います。二重に検索をしても、効率が悪いだけだと思います。

noname#82622
質問者

補足

そうですか・・・ 教えて頂き、ありがとうございました。 最終目的は、ピボットテーブルの合計又は集計行に色を付ける事です。 "合計"Or"集計"で検索は出来ないので、"計"で検索して色を付ければいいと分かりました。 このような場合、皆様はどうされてるのでしょうか?

関連するQ&A

  • エクセル内で複数の文字(50個ぐらい)を一括で検索したい

    タイトル通りなのですが、エクセル内の文字列で 特定の複数(50個ぐらい)の文字を一括検索したいのですが、 どうすれば 検索できますか? 決して検索後に、別の文字に置き換えや、 複数のエクセルを一括検索したいとまでは言いません。 一つのエクセル内で複数(50個ぐらい)の文字を検索し、 ヒットしてくれれば 後はヒットした文字列を手動で 削除していくので、検索できるだけで構わないです。 もちろん 贅沢を言えば、ヒットした文字列の 文字色or文字列の枠内か枠が色付きになってくれると ひと目でヒットしている場所が分かり、助かるのは 事実ですが、簡単に できる方法ってありますか? 複雑なマクロを使うことになるのでしょうか? どなたかご存知のかたがいらっしゃれば 教えていただけないでしょうか? なにぶん無知なほうなので、面倒かと思いますが、 具体的に教えていただけると幸いに思います。 どうぞよろしくお願い致します。

  • VBA/FIND関数を使っての先頭文字列の検索方法

    エクセルVBAにてFIND関数を使って、 文字列検索⇒コピー&ペーストのマクロを作成しているのですが、 どうしても、先頭文字列から検索をする方法がわかりません。 たとえば、 あいうえお いうえおあ おあいうえ えおあいう という文字列から「あいう*」を検索したい場合、 1行目だけを抽出したいのですが、 1,3,4行目が抽出されてしまいます。 find関数では先頭文字からの検索はできないのでしょうか? もし、不可能な場合、先頭文字からの検索を行うにはどのように行えばよいでしょうか? アドバイス、よろしくお願いいたします。

  • エクセルで複数文字列を一括検索してマクロで表示。

    件名どおりなのですが、エクセルで7000程度の文字列から20程度を マクロで一括検索して別のセルかシートに表示させたいのです。 参考にした作業は以下の回答例。 http://okwave.jp/qa/q4859029.html ==以下、コピペ=== No.2 回答日時:2009/04/07 10:13 . 複雑ではないマクロはどうでしょう? A1セルからA50セルまでの各セルにそれぞれ検索したい文字があるとします。 検索したい範囲を選択した上で下記のマクロを実行してみてください。 Sub 連続検索() For Each r In Range("A1:A50") '指定の各検索文字につき Set c = Selection.Find(What:=r.Value, LookAt:=xlPart) '選択範囲を検索 If Not c Is Nothing Then 'あったら fAd = c.Address 'セル番地を控える Do '繰り返す i = i + 1 'カウント c.Interior.ColorIndex = 8 'セル着色 Set c = Selection.FindNext(c) '連続検索 Loop Until c.Address = fAd '一巡するまで'繰り返し End If Next r '次の検索文字で繰り返す Set c = Nothing MsgBox i & "件を発見しました。", vbInformation, " ( ̄ー ̄)v" End Sub ==ここまで=== 上記のマクロで複数の文字列を一括検索ができますが、 この場合は「対象の文字列」を色付けするだけです。 7000程度の文字列があると、スクロールして色の付いた文字列を探すだけでも 結構な時間がかかります。 これをベースに別のセルまたはシートに抽出した文字列をピックアップして 表示させるにはどのような追加がマクロに必要か、教えてください。 当方、エクセル2000を使用しております。 上記のマクロは動作しています。 宜しくお願い致します。

  • マクロのCells.Findについて

    エクセルマクロのCells.Findについて教えてください。 特定の文字列を含むセルを検索するときにCells.Findを使うと思うのですが、例えば、「スペル」という文字列を検索したいけれども、「ゴスペル」というような文字列は排除しながら検索できますか?「スペル」と入力されているセルと、「ゴスペル」と入力されているセルと、「スペル、ゴスペル」と入力されているセルがあったときに、「スペル」や「スペル、ゴスペル」と入力されているセルを検索したいです。 Cells.FindのWhat:=の記入中身を工夫すればできないかなと頭を悩ませていますが、Cells.Find以外の方法でも結構です。どうか宜しくお願いします。

  • マクロ(VBA)での文字列操作

    こういうことできますか? Dim str as String str = Cells(1, 10) Length = Find("会計", str) つまり、エクセル上のセル内の文字列を取ってきて、 会計という文字列を含む場所が何文字目か知りたい。 ところが、Find関数か認識されずエラーが出ます。 Searchにしても同じです。 エクセル関数としては使えるのですが、マクロでは使えないのですか?

  • エクセルマクロ findメソッドがうまくいきません

    エクセルマクロのfindメソッドで同じ条件が続く場合だけうまくいきません。 例えば、商品名を対象として値段を検索して入力するマクロで チョコレート   150 チョコレート ポテトチップス  110 ポッキー     100 ポッキー といった具合で一番目の商品名は正常に値段を出してくるのですが、 2番目になると空白になってしまいます。 どうなっているのでしょうか??教えて下さい!

  • エクセル 複数シート検索のマクロ

    マクロ初心者です。 エクセルの文字列検索で、複数シートにまたがった場合のマクロ記述を知りたいです。 シートaとシートbの選択は下記となると思いますが、 Sub Macro1() Sheets(Array("a", "b")).Select Sheets("a").Activate End Sub その後で、検索窓([ctrl]+[f])を表示させたいのですが・・・。 よろしくご教示願います。

  • エクセルブック内で文字列を検索するマクロを作りたい!

    Excel2002を使用しています。 Excelマクロで、そのBOOK内の文字列を検索するウィンドウを出すマクロを作りたいのですが、うまくいきません。 これは、不可能なのでしょうか?実際に登録したい操作は、「編集→検索」です。 他の方法で可能であれば、教えていただきたいです。 よろしくお願いします!

  • find結果で文字列検索?

    RedHatLinux7.2です。 シェルコマンドで複数のテキストファイルからある文字列を含むファイルだけリストアップしたいのですが、文字列検索の対象となるテキストファイルが色々なディレクトリにまたがっている場合はどうやってやればよいでしょうか? 多分findで抽出したファイルパスをgrepに渡せばいいんでしょうけどパイプとか?がまだ不勉強ですぐにわかりません。 初歩的なことだと思いますがよろしくお願いします。

  • エクセル 複数シート検索のマクロ

    以前、下記の質問をさせてもらい ---- 以下 --------------- エクセルの文字列検索で、複数シートにまたがった場合のマクロ記述を知りたいです。 シートaとシートbの選択は下記となると思いますが、 Sub Macro1() Sheets(Array("a", "b")).Select Sheets("a").Activate End Sub その後で、検索窓([ctrl]+[f])を表示させたいのですが・・・。 ---- 以上 --------------- に対して、以下のご回答を受けたのですが、 Sub TEST01() Sheets(Array("a", "b")).Select Cells.Select Application.Dialogs(xlDialogFormulaFind).Show End Sub うまく行く場合もあるのですが(と思い解決で締め切ってしまいました)、大抵の場合(該当文字列が複数あるとき?)にフリーズしてしまいます。 上記マクロだと、「検索する文字列」タイトルで[次を検索][閉じる][置換]ボタンが表示され(古いOffice?)、 マクロを使用しない通常の[ctrl]+[f]だと、「検索と置換」タイトルで[検索]と[置換]タグが表示されます(Office2003)。 また、マクロを実行した後は通常の[ctrl]+[f]、[編集]-[検索]が効かなくなってしまいます。 この部分はフリーズとは無関係かもしれませんが・・・。 フリーズしないマクロの記述と、出来れば検索終了後に特定のシートに戻るようなマクロも追加したいです。 また、別件になりますが、ファイルを開いた時に必ず特定のシートに位置づけられる事ができればそれもご教授願いたいです。

専門家に質問してみよう