[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『一致した文字列を検索』(ちぃさん)
連日お世話になります。
可能なのかわからないのですがもし、一致した文字列をBook内のSheetから検索する方法がありましたら教えて頂けないでしょうか。
宜しくお願いしかます。
Book1に複数(仮に20シート)のSheetが存在するとします。
Sheet名はランダムだとします。
Book1を開いた状態でも閉じている状態でもどちらでもかまいません。
このBook1内にある文字列(仮にNew1)がどのSheetの何処(どのセル)にあるのか検索する方法はありますでしょうか?
もし検索した文字列が複数あればすべて何処にあるかまで検索したいです。
可能でしょうか?
説明が解りにくいようでしたら指摘下さい。
どうか宜しくお願い致します。
※2003でも使用できる方法が希望です。
< 使用 Excel:Excel2010、使用 OS:Windows7 >
検索のダイアログでオプションを開き「検索場所」を「ブック」にして「すべて検索」としてはどうか? 2003でも可能なはず。
追記 セルの中が全く同じものを検索するのならばオプションで「セル内容が完全に同一であるものを検索する」にも チェックを入れてくれ。 (ねむねむ) 2015/01/29(木) 17:23
検索のダイアログでオプション いままで使った事なかったです。
正しくは私の使い方が悪かったみたいです。(汗)
もしかして数字とアルファベットの混ざったのもで一部分のみ一致したものの検索する方法があるのでしょうか?
たとえば
22XC123R
54XC3223
55XC453A
と 〇〇XC〇〇〇〇 のような XC だけが共通のもの全ての検索とか。
可能でしょうか?
(ちぃさん) 2015/01/29(木) 18:01
??XC???? で完全一致
(seiya) 2015/01/29(木) 18:22
もし、XCが含まれるということなら。 そうではなく、○○XC○○○○ つまり、3桁目から4桁目が XC ということなら、seiyasさんのコメントのように 以下の Findの xlPart を xlWhole に、XC を ??XC???? に。
Book1.xlsx が開かれた亜状態で検索してマクロブックの Sheet1 に結果を表示。
Sub Test()
Dim c As Range
Dim f As Range
Dim sh As Worksheet
Dim dic As Object
Set dic = CreateObject("Scripting.Dictionary")
For Each sh In Workbooks("Book1.xlsx").Worksheets
Set c = Nothing
Set c = sh.Cells.Find(What:="XC", LookIn:=xlFormulas, LookAt:=xlPart)
If Not c Is Nothing Then
Set f = c
Do
dic(dic.Count) = Array(sh.Name, c.Address)
Set c = sh.Cells.FindNext(c)
Loop Until c.Address = f.Address
End If
Next
With ThisWorkbook.Sheets("Sheet1")
.Cells.Clear
.Range("A1").Resize(dic.Count, 2).Value = WorksheetFunction.Transpose(WorksheetFunction.Transpose(dic.items))
End With
End Sub
(β) 2015/01/29(木) 18:38
Sub test()
Dim ws As Worksheet, r As Range, ff As String, a(), n As Long
ReDim a(1 To 1000)
For Each ws In Worksheets
Set r = ws.Cells.Find("??XC????", , , 1)
If Not r Is Nothing Then
ff = r.Address
Do
n = n + 1
If UBound(a) < n Then
ReDim Preserve a(1 To UBound(a) + 1000)
End If
a(n) = Array(ws.Name, r.Address)
Set r = ws.Cells.FindNext(r)
Loop Until ff = r.Address
End If
Next
ReDim Preserve a(1 To n)
Sheets(1).Cells(1).Resize(n, 2).Value = Application.Index(a, 0, 0)
End Sub
(seiya) 2015/01/29(木) 19:22
検索した文字列のある場所を記録するマクロなのですね。
感謝です。
凄く便利です。
この検索して Sheet1 に記録する時にハイパーリンク使う事は可能でしょうか?
ハイパーリンク使う事は可能でしょうか? というのは記録した Sheet1 の所からデーターのある場所にとびたいのですが(汗)
現在、Book1.xlsx に記録されるようになっているみたいなのでデーターのあるBookにマクロを記述したとして
データーのある Book1.xlsm の記録シート(仮にシート名をlogとして)から Book1.xlsm 内の検索した所にとべれば凄く助かるのですが(汗)
無理でしょうか。。。。。。(汗)
(ちぃさん) 2015/01/29(木) 21:16
Sheets(1).Cells(1).Resize(n, 2).Value = Application.Index(a, 0, 0)
を
With Sheets(1).Cells(1).Resize(n, 2)
.Value = Application.Index(a, 0, 0)
.Columns(3).Formula = "=hyperlink(""#'""&a1&""'!""&b1,a1&b1)"
End With
に変更
(seiya) 2015/01/29(木) 21:44
またわからない事がでてきましたら質問にこさせてください。
お付き合いいただきましてありがとうございました。
(ちぃさん) 2015/01/29(木) 22:13
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.