| 
    
     |  | ▼ぴん さん: >シート1のA列(A1〜A50)に入力されている文字が、他シート(シート2〜8)に
 >あるか?あったら、そのシート名をシート1のD列に書き出す。
 
 ○○の一つ覚えですが、Dictionary(辞書オブジェクト)を
 使ったらどうでしょう
 
 Sub Try1()
 Dim i As Long
 Dim c As Range, r As Range
 Dim ss As String, sName As String
 Dim dic As Object
 
 Set dic = CreateObject("Scripting.Dictionary")
 'シート2枚目以降のA列の値を
 ' そのシート名とともに辞書登録します
 For i = 2 To Worksheets.Count
 With Worksheets(i)
 sName = .Name
 Set r = .Range("A1", .Cells(.Rows.Count, 1).End(xlUp))
 For Each c In r
 ss = c.Value
 dic(ss) = dic(ss) & "," & sName 'A列値とシート名を登録
 Next
 End With
 Next
 
 '1枚目のシートのA列の値が辞書にあれば、
 ' D列に 出現シート名をカンマ区切りで表示します
 With Worksheets(1)
 Set r = .Range("A1", .Cells(.Rows.Count, 1).End(xlUp))
 For Each c In r
 ss = c.Value
 If dic.Exists(ss) Then
 c(1, 4).Value = Mid$(dic(ss), 2)
 End If
 Next
 End With
 End Sub
 
 
 |  |