2016-07-20 2 views
1

У меня есть код, который заменяет часть строки в столбце A в листе «Данные» с новым значением, записанным в столбце B листа «Фильтр».Vba excel заменяет строку на основе значений таблицы

Колонка A листа «Фильтр» имеет старые значения и столбца B имеет значения после замены см изображения:

enter image description here

Я знаю, как заменить, например, «Гриффит RV8» в «Гриффит Р.В. -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"? Это не похоже на простую замену - есть ли какое-то другое правило, которое вам нужно применить? –

+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 

заменит [some text here][space]Lookup.Value с Lookup.Offset(0, 1).Value

Смежные вопросы