• ベストアンサー

エクセルの複数シートにまたがる検索方法は

Excel2000を使用しています。 複数のシート間である文字列を検索する方法はあるでしょうか? 1ファイルの中に(30sheet)程度有り、データを分離記載してあります。このファイルのシートのどこかにある文字列を1回の検索操作で見つける方法が有れば教えてください。宜しくお願いします。

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

  • ベストアンサー
  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.5

#4です。 Sub Test1() Dim i As Integer, ws As Worksheet, c Dim fAddress, fw As String fw = Application.InputBox("検索文字を指定", "検索", Type:=2) If fw = "" Then Exit Sub For i = ActiveSheet.Index To Worksheets.Count Set ws = Worksheets(i) With ws.Cells  Set c = .Find(fw, LookIn:=xlValues)   If Not c Is Nothing Then    fAddress = c.Address    Do     ws.Activate: c.Activate     If MsgBox("次を検索しますか?", vbYesNo _       + vbQuestion, "検索") = vbNo Then Exit For     Set c = .FindNext(c)    Loop While Not c Is Nothing And c.Address <> fAddress   End If End With Next i End Sub 通常の検索ダイアログも使う別パターン ただし、非常に使いづらい  別シートを続けて検索する時は「閉じる」  途中で検索を打切る時は「×」 Sub Test2() Dim fw As String, i As Integer fw = Application.InputBox("検索文字を指定", "検索", Type:=2) If fw = "" Or fw = "False" Then Exit Sub For i = ActiveSheet.Index To Worksheets.Count  Worksheets(i).Activate  Worksheets(i).Cells.Select  If Application.Dialogs(xlDialogFormulaFind).Show(fw) _    = False Then    ActiveCell.Select: Exit For  End If  ActiveCell.Select Next i End Sub

kenji3
質問者

お礼

ありがとうございます。 Sub Test1()でいけそうです。

その他の回答 (5)

  • arukamun
  • ベストアンサー率35% (842/2394)
回答No.6

No.2です。 当方Excel2002でしたので、仕様が若干違うようで、Excel2000ではオプションボタンが無いんですね。 申し訳ありませんでした。 もう一つシートタブを選択する際に、 どこかのシートタブを右クリックして、  すべてのシートを選択 という項目はありますか? これが出来れば解決ですよね。

kenji3
質問者

お礼

>どこかのシートタブを右クリックして、 >すべてのシートを選択 新しい機能を知りました。 ありがとうございました。

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.4

私も他の方の回答どおり、   Ctrlを押しながら   Shiftを押しながら   Shift + Ctrl + PageUp又はPageDown   シート名のタブを右クリックし「全てのシートを選択」   マクロなら   Sub Test()    ThisWorkbook.Worksheets.Select    Application.Dialogs(xlDialogFormulaFind).Show   End Sub などの方法で複数シートを選択して検索すれば、出来ると思ってました。 ただ、Excel2000で試したところ各シートのデータ量が揃っていない場合や最初は検索出来るのに再度実行するとダメなど、非常に不安定で上手く行きません。 Excel2000 以外の環境だとどうなんでしょうか? また #1さんの『検索で「すべて検索」』や #2さんの『[オプション]ボタンを押して、検索場所をシートからブックに変更』はExcel2000では見当たらないようです。 ちょっと大仰なコードですが、マクロを書いてみました。 選択シートより、右側のシートを対象に検索します。 Sub Test1() Dim i As Integer, ws As Worksheet, c Dim fAddress, fw As String fw = Application.InputBox("検索文字を指定", "検索", Type:=2) If fw = "" Then Exit Sub For i = ActiveSheet.Index To Worksheets.Count Set ws = Worksheets(i) With ws.Cells  Set c = .Find(fw, LookIn:=xlValues)   If Not c Is Nothing Then    fAddress = c.Address    Do     MsgBox ws.Name & "!" & c.Address     Set c = .FindNext(c)    Loop While Not c Is Nothing And c.Address <> fAddress   End If End With Next i End Sub

kenji3
質問者

補足

ありがとうございます。 マクロはokでした。 贅沢を言えば通常の検索のように、カーソルが件sかういちへ動いてくれるとよりよいのですが、できないでしょうか?

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

シートタブをCTRLキーを押しながらクリックし、 編集-検索-(検索する文字列)に検索文字列を入力し 「次を検索」を次々にクリックすると別の多シートに亘って検索できます。 もし何度もする必要があって、毎回上記の「シートタブをCTRLキーを押しながらクリック」が面倒なら シートにコマンドボタンを貼りつけ、そのクリックイベントに Private Sub CommandButton1_Click() Sheets(Array("sheet1", "sheet2", "sheet3")).Select End Sub をコピペすれば、ワンクリックでシートを選択状態に出来ます。 Arrayの中に選択したいSheet名を””で囲って、で区切って並べます。30シートもテストしてませんが大丈夫かどうか。VBAの継続行の折り返し表記法は1スペース+1アンダーバー+改行です。

kenji3
質問者

お礼

ありがとうございます。 だんだん近づいてきたような。 確かに便利です。 もう少し募集させてもらいます。

  • arukamun
  • ベストアンサー率35% (842/2394)
回答No.2

[編集]→[検索] や Ctrl + F で検索ウィンドウが出たら、[オプション]ボタンを押して、検索場所をシートからブックに変更すれば、ブック全体を検索出来ます。 また、特定のシートを決め内での方法としては、 Ctrlを押しながら、検索したいシートをすべてクリックして選択した状態で検索すれば良いですね。

kenji3
質問者

お礼

ありがとうございます。 エクセル2000には、[オプション]ボタンはないです。残念です。 シートを選択してはOKでした。 ただ、シート数が多いので毎回はつらいかも。

  • naozou
  • ベストアンサー率30% (19/62)
回答No.1

検索で「すべて検索」でできませんか?

kenji3
質問者

お礼

ありがとうございます。 エクセル2000には「すべて検索」がないのものですから。

関連するQ&A