[[20160922184346]] 『特定文字列を含むセル検索』(代理人) ページの最後に飛ぶ

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

 

『特定文字列を含むセル検索』(代理人)

久しぶりに質問させていただきます。

特定エリア(ex.Range("D2:CZ1000"))内で、特定の文字列(ex."5-AB")を含むセルを検索し、
複数あるうちのどのセルでも良いので、セルの行番号と列番号(ex.Cells(行番号,列番号)と使える)
を取得するにはどうすればできるでしょうか。

以上よろしくご教授願います。

< 使用 Excel:Excel2010、使用 OS:Windows7 >


 参考HPです。

 Findメソッド(Find,FindNext,FindPrevious)|ExcelマクロVBA入門
http://excel-ubara.com/excelvba1/EXCELVBA398.html
(カリーニン) 2016/09/22(木) 20:04

 方法は色々あるんでしょうけど、前後関係が見えないので無難に関数化してみました。
 (その為、割と「コイツめんどくさいな」っていう部類の回答例となってしまうでしょう)

 Private Function FindRC(ByVal Target As Range, ByVal FindString As String, Res() As Variant) As Long
     If Target Is Nothing Then Exit Function
     Dim v() As Variant, r As Long, c As Long
     v = Target.Value
     For r = 1 To Target.Rows.Count
         For c = 1 To Target.Columns.Count
             If v(r, c) Like "*" & FindString & "*" Then
                 FindRC = FindRC + 1
                 ReDim Preserve Res(1 To 3, 1 To FindRC)
                 Res(1, FindRC) = Target.Cells(r, c).Row
                 Res(2, FindRC) = Target.Cells(r, c).Column
                 Res(3, FindRC) = v(r, c)
             End If
         Next
     Next
 End Function

 Sub test()
     Dim Ra As Range, Rtn As Long, i As Long, ResAry() As Variant
     Set Ra = [D2:CZ1000]
     Rtn = FindRC(Ra, "5-AB", ResAry)
     Debug.Print Rtn & "個検出"
     If Rtn > 0 Then
         For i = 1 To Rtn
             Debug.Print "Cells(" & ResAry(1, i) & ", " & ResAry(2, i) & ")", "Value:=" & ResAry(3, i)
         Next
     End If
 End Sub

(白茶) 2016/09/22(木) 20:10


カリーニン様

参考HPのご紹介ありがとうございました。これを使えばできそうですので、トライしてみます。

白茶様

実践的な事例をご紹介いただきありがとうございました。是非活用させていただきます。

(代理人) 2016/09/23(金) 08:03


コメント返信:

[ 一覧(最新更新順) ]


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