[[20150129165405]] 『一致した文字列を検索』(ちぃさん) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『一致した文字列を検索』(ちぃさん)

連日お世話になります。

可能なのかわからないのですがもし、一致した文字列を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

(β)さん、(seiya)さん マクロ作って頂きありがとうございます。

検索した文字列のある場所を記録するマクロなのですね。
感謝です。
凄く便利です。

この検索して 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


(seiya)さん 度々すみません。
ありがとうございます。

またわからない事がでてきましたら質問にこさせてください。

お付き合いいただきましてありがとうございました。
(ちぃさん) 2015/01/29(木) 22:13


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.