- ベストアンサー
エクセルの複数シートにまたがる検索方法は
Excel2000を使用しています。 複数のシート間である文字列を検索する方法はあるでしょうか? 1ファイルの中に(30sheet)程度有り、データを分離記載してあります。このファイルのシートのどこかにある文字列を1回の検索操作で見つける方法が有れば教えてください。宜しくお願いします。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
#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
その他の回答 (5)
- arukamun
- ベストアンサー率35% (842/2394)
No.2です。 当方Excel2002でしたので、仕様が若干違うようで、Excel2000ではオプションボタンが無いんですね。 申し訳ありませんでした。 もう一つシートタブを選択する際に、 どこかのシートタブを右クリックして、 すべてのシートを選択 という項目はありますか? これが出来れば解決ですよね。
お礼
>どこかのシートタブを右クリックして、 >すべてのシートを選択 新しい機能を知りました。 ありがとうございました。
- papayuka
- ベストアンサー率45% (1388/3066)
私も他の方の回答どおり、 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
補足
ありがとうございます。 マクロはokでした。 贅沢を言えば通常の検索のように、カーソルが件sかういちへ動いてくれるとよりよいのですが、できないでしょうか?
- imogasi
- ベストアンサー率27% (4737/17069)
シートタブをCTRLキーを押しながらクリックし、 編集-検索-(検索する文字列)に検索文字列を入力し 「次を検索」を次々にクリックすると別の多シートに亘って検索できます。 もし何度もする必要があって、毎回上記の「シートタブをCTRLキーを押しながらクリック」が面倒なら シートにコマンドボタンを貼りつけ、そのクリックイベントに Private Sub CommandButton1_Click() Sheets(Array("sheet1", "sheet2", "sheet3")).Select End Sub をコピペすれば、ワンクリックでシートを選択状態に出来ます。 Arrayの中に選択したいSheet名を””で囲って、で区切って並べます。30シートもテストしてませんが大丈夫かどうか。VBAの継続行の折り返し表記法は1スペース+1アンダーバー+改行です。
お礼
ありがとうございます。 だんだん近づいてきたような。 確かに便利です。 もう少し募集させてもらいます。
- arukamun
- ベストアンサー率35% (842/2394)
[編集]→[検索] や Ctrl + F で検索ウィンドウが出たら、[オプション]ボタンを押して、検索場所をシートからブックに変更すれば、ブック全体を検索出来ます。 また、特定のシートを決め内での方法としては、 Ctrlを押しながら、検索したいシートをすべてクリックして選択した状態で検索すれば良いですね。
お礼
ありがとうございます。 エクセル2000には、[オプション]ボタンはないです。残念です。 シートを選択してはOKでした。 ただ、シート数が多いので毎回はつらいかも。
- naozou
- ベストアンサー率30% (19/62)
検索で「すべて検索」でできませんか?
お礼
ありがとうございます。 エクセル2000には「すべて検索」がないのものですから。
お礼
ありがとうございます。 Sub Test1()でいけそうです。