
No.2ベストアンサー
- 回答日時:
丸投げですか(^^;
以下のマクロをALT+F11でVBE画面を開き、左上のVBA Projectでシート名を右クリックし「挿入」→「標準モジュール」で表示される画面に貼り付けて下さい。マクロの実行はワークシート画面に戻ってALT+F8でマクロ一覧を開き、マクロ名を選択して「実行」ボタンです。
勉強になりませんので解説や再修正はしません。もし修正が必要ならご自身でお願いします。
Sub Macro1()
Dim ret
Dim r As Range
Dim adr As String
Dim cnt As Long
Dim psw As Boolean
Dim mySht, adSht, ws As Worksheet
Set mySht = ActiveSheet
ret = Application.InputBox("検索文字列を入力してください")
If TypeName(ret) <> "Boolean" Then
With mySht.Cells
Set r = .Find(ret, LookIn:=xlValues, lookat:=xlPart)
If Not r Is Nothing Then
adr = r.Address
cnt = 1
For Each ws In Worksheets
If ws.Name = "検索結果" & ret Then
psw = True
Exit For
End If
Next ws
If psw Then
Set adSht = ws
adSht.Cells.ClearContents
Else
Set adSht = Worksheets.Add
adSht.Name = "検索結果" & ret
End If
adSht.Cells(cnt, 1).Value = r.Value
adSht.Cells(cnt, 2).Value = adr
Do
Set r = .FindNext(r)
If r.Address = adr Then
Exit Do
Else
cnt = cnt + 1
adSht.Cells(cnt, 1).Value = r.Value
adSht.Cells(cnt, 2).Value = r.Address
End If
Loop
End If
End With
End If
mySht.Activate
End Sub
お礼が遅くなり申し訳ありませんでした。
上記をやってみたらできました!
思ったとおりの結果です。
すごいです。こうやるとできるんですね。
ただ、内容がたしかに理解できていません。
勉強します。
こういったツール(?とよぶのでしょうか)を作成できる
人になりたいと思っています。
本当にありがとうございました。

No.4
- 回答日時:
#3です。
わかりにくかったようでスミマセン。A案・B案ともにそうですが、
>>検索は【エクセルの検索機能で】行う<<
>>【検索結果を】すべて選択する<<
のがポイントです。
Excelの検索機能で[すべて検索]を使うと、
検索ダイアログに検索結果のリストが表示されますよね。
その[結果リスト]の特定の行を選択すると、該当セルが選択されます。
また[結果リスト]上でCtrl+Aを押すと、結果リストのすべての行が選択されます。
つまり、検索でヒットしたセルがすべて選択されます。
A案もB案も、
この[検索でヒットしたセルがすべて選択された状態]で
行うことを想定しています。
*********************
確かに、対象のセルが複数の列に散らばっている場合は、
オートフィルタでは解決できませんね。失礼しました。
(そういう状況やニーズ自体ちょっとイレギュラーな気もしますが)
ただ、書式や数式を対象とした検索ではなく、
単に値を対象として文字列を探すだけであれば、
私なら次のような方向で考えます。
[シート1のA1:AB999の範囲で完全一致検索を行う場合]
適当なシートで、
A1:検索対象の文字、たとえば「ほにゃらら」を入力
B1:=INDEX(1/LARGE((Sheet1!$A$1:$AB$999=$A$1)/(ROW(Sheet1!$A$1:$AB$999)*1000+COLUMN(Sheet1!$A$1:$AB$999)),ROW()),)
として下方にフィル
C1:=ADDRESS(INT(B1/1000),MOD(B1,1000))
として下方にフィル
⇒値が「ほにゃらら」であるセルのセル番地がC列に順に表示される
(Excel2003で動作確認済)
まぁ、これはこれでかなり無理矢理ですし、
#2さんの方法で既に解決しているご様子ですから、
あくまで参考としてお考えください。
ありがとうございました。
関数がIF,SUM,AVRAGE,MAX,MIN、VLOOKUP
くらいしかよくわかっていなくて。。。
上記式が何をしているのかがよくわかりません。。
LARGE関数はその対象範囲(ここではA1からAB999でしょうか)
から大きい順の値をだす関数ですよね。それを1/のあとにいれ、
さらに。。えっと。。。
勉強します。。。
関数の組み合わせってむずかしいです。
どうやってみなさん手につけられていくのですか。。。

No.3
- 回答日時:
[すべて検索]の検索結果は、いかにも書き出せそうな感じがするのですが、
実際やってみると、どうも無理っぽいですね。
●A案:検索結果全体のセル参照を[名前]で記録して数式で書き出す
1.[すべて検索]で検索する([検索方向]:行で検索すること)
2.Ctrl+A で検索結果を全て選択する
3.挿入>名前>定義 で、適当な文字列(例えば"test")を入力してEnter
以下、同じブックの任意のシートで…
4.任意のセル:=CELL("address",test)
とすると、検索結果のセル番地が単一の文字列として返ります。
あるいは…
5.A1セル:1 とする
6.A2セル:=IF(ROWS(INDEX(test,,,A1))=COUNTIF($A$1:A1,A1),A1+1,A1)
として下方にフィル
7.B1セル:=COUNTIF($A$1:A1,A1)
として下方にフィル
8.C1セル:=CELL("address",INDEX(test,B1,,A1))
として下方にフィル
※検索結果のセル番地が順に返ります。
9.D1セル:=INDEX(test,B1,,A1)
として下方にフィル
※検索結果の値が順に返ります。
(Excel2003で動作確認済)
※セル参照全体の長さに制限があるので、
HITしたセルの数が多い場合には、その全てを取得することはできません。
※セルに入力されている数式を取得することはできません、たぶん。
●B案:検索結果のセルを選択してマクロで書き出す
Excelの検索機能にはさまざまなオプションがありますが、
そのすべてをマクロでフォローするのは大変なので、
検索自体は既存の機能を使い、結果を書き出すというアプローチで…。
0.下記のマクロを設置する
1.[すべて検索]で検索する
2.Ctrl+A で検索結果を全て選択する
3.マクロを起動する
動作の概要
選択しているすべてのセルについて、
・セル番地
・値
・(数式が入っていれば)数式
を新規ブックに書き出す。
'-------------↓ ココカラ ↓-------------------
Sub Sample()
Set myCels = Selection
i = 1
With Application.Workbooks.Add.Worksheets(1)
For Each myCel In myCels
.Cells(i, 1) = myCel.Address
.Cells(i, 2) = myCel
If myCel <> myCel.Formula Then
.Cells(i, 3) = "'" & myCel.Formula
End If
i = i + 1
Next myCel
End With
End Sub
'-------------↑ ココマデ ↑-------------------
(Excel2003で動作確認済)
以上ご参考まで。長乱文陳謝。
追記
どのような状況、目的での処理かわからないので断言はしませんけど、
なんとなく「オートフィルタ」で解決しそうな予感が…。
お礼が遅くなり申し訳ありませんでした。
A案については関数がよくわからなくて、何をどうしているかが
わからず試せませんでした、申し訳ありません。
B案についてはためしてみたのですが、私のやり方が悪いのか
求めたい結果が得られませんでした。。。
(ためしてみたところ、全部のセル番地が別ブックに出力
されまして。。。)説明が下手で申し訳ありません。
オートフィルタ。。たしかにそうなんですが、データ量が
莫大なため、いちいちフィルタでみれなくて。。。
(何かよい方法があるのでしょうか。。。)
たとえば、A列からAB列までの中でTESTと入力されているセルの
番地をしりたかったら、いちいちA列からAB列までひとつずつ
オプションで「TEST」でフィルタをかけていく方法しか
知らないのですが。。。。
No.1
- 回答日時:
エクセルVBAの勉強をしないとできません。
一応1つしかないならマクロの記録(置換で採る?)をとれば、どんなコードか判りますが、次々と見つけて見つかったもの全体文字列(数字)を他シートのセルに順次表示していくのは、VBAの中級の技と思います。
勉強する気があれば、WEB検索で「エクセル 検索 VBA Find」で検索し関連記事をじっくり読んで、判らないところを絞って質問したら。
お礼が遅くなり申し訳ありませんでした。
そうですよね。
VBA勉強しなきゃ、、、と思っています。
ご指摘ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
Excel マクロ 検索結果を別シートにコピー
その他(Microsoft Office)
-
エクセルで検索結果を抽出し、別シートにコピーしたい。
Excel(エクセル)
-
エクセルの検索機能でコピーペースト出来ません
Excel(エクセル)
-
-
4
Excelでの検索結果を含む行だけを表示させたい
Excel(エクセル)
-
5
EXCELの検索結果を別シートに貼り付けたい
その他(Microsoft Office)
-
6
エクセルで、book全体の検索&抽出の方法
Excel(エクセル)
-
7
IG、ACC、+B、ILL
国産バイク
-
8
括弧があるとHYPERLINKで飛べない?
Excel(エクセル)
-
9
エクセルで隣接していない複数のセルをコピーして、その状態(隣接していない)で張り付ける方法
Excel(エクセル)
-
10
自分の部署・担当を言うとき、どういう言い方が正しいでしょうか?? 会社のときは、弊社といいますが、部
その他(ビジネス・キャリア)
-
11
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
12
EXCELの文字列操作で文字数不足の分をスペースで補う方法
Excel(エクセル)
-
13
ExcelVBAのユーザーフォームの中に線を引きたい
Visual Basic(VBA)
-
14
Excelで数式内の文字色を一部だけ変更したい
Excel(エクセル)
-
15
CASE文のエラーについて
Oracle
-
16
エクセルのフィルタオプションで「ある文字列を含まない」条件は?
Excel(エクセル)
-
17
リストと一致する値のセルを塗りつぶしたい。
その他(Microsoft Office)
-
18
exeファイルの中身を見ることは可能ですか?
フリーソフト
-
19
データベース関係で、データの洗い替えとはどのような事を行うことでしょう
IT・エンジニアリング
-
20
未、済、完了の英訳は?
英語
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
クリックすると文章が表示され...
-
EXCELで特定のセルに表示...
-
エクセル 数字をすべて○などの...
-
セルデータの一時保存
-
エクセルで独自のキーボードシ...
-
DRセルのリンクをCセルにハイパ...
-
マクロで未来?の日付を算出する
-
太字に設定されているセルの個...
-
Excel ハイパーリンクのURLを別...
-
エクセルでの特定位置のセル内...
-
VBA 見つからなかった時の処理
-
Excelの関数で時刻を固定する方法
-
セルの値が変ると自動でマクロ...
-
Excelでセルをクリックす...
-
セルの内容をテキストボックス...
-
エクセルで時間と連動して数値...
-
Excel内での検索結果をシート...
-
マクロを実行すると画像がズレ...
-
sheetsの保護されていないセル...
-
現在のセルの位置を返す関数は...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
EXCELで特定のセルに表示...
-
Excel内での検索結果をシート...
-
エクセル 数字をすべて○などの...
-
クリックすると文章が表示され...
-
Excelで、図形内の文字をセルに...
-
Excel ハイパーリンクのURLを別...
-
Excelでセルをクリックす...
-
太字に設定されているセルの個...
-
マクロを実行すると画像がズレ...
-
現在のセルの位置を返す関数は...
-
Excel:セルの値(文字列)を数...
-
Excel2007 色のカウント (VBA)
-
セルの内容をテキストボックス...
-
セルがクリックされた回数をカ...
-
エクセル 未入力セルがあると...
-
エクセルマクロ 赤色の文字を検...
-
選択したセル範囲に入っている...
-
アポストロフィーの一括挿入 ...
-
エクセルでPDFリンクを大量...
-
エクセルでセルをダブルクリッ...
おすすめ情報