2016-07-20 5 views
1

시트 "데이터"의 열 A의 문자열 부분을 시트 "필터"의 열 B에 쓰여있는 새 값으로 바꾼 코드가 있습니다.Vba excel 테이블 값을 기준으로 문자열 바꾸기

열 시트의 "필터"이전 값을 가지고 있으며, 열 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