簡體   English   中英

VBA Excel基於表值替換字符串

[英]Vba excel replacing string based on table values

我有用新的值替換工作表“過濾器”的列B中寫入的值的代碼,該代碼將工作表“數據”的A列中的字符串的一部分替換了。

工作表“過濾器”的A列具有舊值,而B列具有替換后的值,請參見圖片:

在此處輸入圖片說明

我知道如何將“ Griffith RV8”替換為“ Griffith RV-8”,但是如何進行替換並刪除替換字符串前面的所有字符?

格里菲斯RV8 = RV-8

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

您可以使用通配符替換字符串的一部分。

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
rngData.Replace What:= "* " & Lookup.Value, _
                Replacement:=Lookup.Offset(0, 1).Value, _
                    LookAt:=xlPart, _
                    SearchOrder:=xlByRows, _
                    MatchCase:=False

將用Lookup.Offset(0, 1).Value替換[some text here][space]Lookup.Value

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM