2016-07-20 21 views
1

シート "データ"の列Aの文字列の一部をシート "フィルタ"の列Bに書き込まれた新しい値で置き換えるコードがあります。Vbaは表の値に基づいて文字列を置換します。

列Aのシートの「フィルタ」古い値を持ち、列Bは、交換後の値は、画像を参照しています

enter image description here私はに例えば「グリフィスRV8」を交換する方法を知っている

「グリフィスのRVを-8 "しかし、私はその置き換えを行い、その置き換えられた文字列の前のすべての文字を削除することはできますか?

グリフィスRV8 = RV8は

Sub Substitutions() 

Dim rngData  As Range 
Dim rngLookup As Range 
Dim Lookup  As Range 

With Sheets("Data") 
    Set rngData = .Range("A1", .Range("A" & Rows.Count).End(xlUp)) 
End With 

With Sheets("Filter") 
    Set rngLookup = .Range("A1", .Range("A" & Rows.Count).End(xlUp)) 
End With 

For Each Lookup In rngLookup 
    If Lookup.Value <> "" Then 
     rngData.Replace What:=Lookup.Value, _ 
         Replacement:=Lookup.Offset(0, 1).Value, _ 
         LookAt:=xlPart, _ 
         SearchOrder:=xlByRows, _ 
         MatchCase:=False 
    End If 
Next Lookup 

End Sub 
+0

は、なぜあなたは "RV8" と "グリフィスRV8" を交換しないで[some text here][space]Lookup.Valueを置き換えるのだろうか?これは単純な置き換えのようには見えません - あなたが適用する必要があるいくつかの他のルールがありますか? –

+0

RV8はその前に数十の異なる言葉で表示されるので、その文字列から必要なのはRV-8なので、 – FotoDJ

答えて

1

あなたは、文字列の一部を置き換えるために、ワイルドカードを使用することができます。

Sub Example() 

    Range("A1") = "Where in the World is Carmen Sandiego?" 

    Range("A1").Replace "*Carmen", "Who is Micheal" 

    Range("A3") = "Hello World! How are You?" 

    Range("A3").Replace "!*", "? Can you hear me!?" 

    Range("A5") = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" 

    Range("A5").Replace "??H??", "fgHij" 

    ' You can escape the wildcards using "\" 
    Range("A7") = "? not escaped" 

    Range("A8") = "WHO? WHO!" 

    Range("A8").Replace "WHO?", "WHO ARE YOU?" 

    Range("A10") = "? was escaped using a backslash \?" 

    Range("A11") = "WHO? WHO!" 

    Range("A11").Replace "WHO\?", "WHO ARE YOU?" 

End Sub 
1
rngData.Replace What:= "* " & Lookup.Value, _ 
       Replacement:=Lookup.Offset(0, 1).Value, _ 
        LookAt:=xlPart, _ 
        SearchOrder:=xlByRows, _ 
        MatchCase:=False 

Lookup.Offset(0, 1).Value

関連する問題