| 
    
     |  | ▼Yuki さん: 
 アドバイスありがとうございます
 ただ、-(ハイフン)のときもあり、アルファベット[A-Z]一文字入っているときもあって、常に、?のところがハイフンとは限らないのです・・・(悲)
 
 ?(ハテナ)の場所が、ハイフンかアルファベットどちらでも対応できるようにするにはやはり、dictionaryオブジェクトでは、難しいのでしょうか?
 
 
 >▼MIMI さん:
 >>
 >>しかし、このコードだと、とても時間がかかってしまう難点があります
 >
 >例のように規則性があるんでしたら
 >下記のようでいけそうです。
 >
 >Sub TESTx()
 >  Dim Dic As Object
 >  Dim v1 As Variant
 >  Dim v2 As Variant
 >  Dim i  As Long
 >
 >  With Worksheets("Sheet1")
 >    v1 = .Range("A1").CurrentRegion.Resize(, 2).Value
 >  End With
 >
 >  Set Dic = CreateObject("Scripting.Dictionary")
 >  For i = 2 To UBound(v1)
 >    Select Case Left(v1(i, 1), 1)
 >      Case "*", "?"
 >        Dic(Replace(Replace(Right(v1(i, 1), Len(v1(i, 1)) - 1), "*", "|"), "?", "-")) = v1(i, 2)
 >      Case Else
 >        Dic(Replace(Replace(v1(i, 1), "*", "|"), "?", "-")) = v1(i, 2)
 >    End Select
 >  Next
 >
 >  With Worksheets("Sheet2")
 >    v2 = .Range("A1").CurrentRegion.Resize(, 2).Value
 >    For i = 2 To UBound(v2)
 >      If Dic.Exists(v2(i, 1)) Then
 >        v2(i, 2) = Dic(v2(i, 1))
 >      End If
 >    Next
 >    .Range("A1").Resize(UBound(v2), 2).Value = v2
 >  End With
 >End Sub
 
 |  |