2017-05-18 119 views
0

如何替換vba中的單詞?例如,我有一列文字,但有些以U和E結尾,我想刪除U和E,我該怎麼做?替換vba中的單詞

Cells.Replace What:="/*-", Replacement:="", LookAt:=xlPart, SearchOrder _ 
    :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False 

我用這個改變例如 「AAA/& - 」 到 「AAA」。我如何做「AAA U」到「AAA」,我不能使用相同的公式,因爲「U」是一個普通的字母?我的單詞列由大約20個以U結尾的不同單詞組成,因此我無法對該單詞進行硬編碼。

請幫忙,謝謝!

+0

'Cells.Replace「U」,「」,xlPart'如果沒有單詞包含「U 「結束之前 – Slai

回答

0

只要環路在細胞上,檢查每一個的最後一個字符:

Sub Remove_E_and_U() 
    Dim r As Range 

    For Each r In ActiveSheet.UsedRange.Cells.SpecialCells(xlCellTypeConstants) 
     v = r.Value 
     If v <> "" Then 
      If Right(v, 1) = "U" Or Right(v, 1) = "E" Then 
       r.Value = Mid(v, 1, Len(v) - 1) 
      End If 
     End If 
    Next r 
End Sub 

EDIT#1:

要通過ħ限制宏列˚F,取代:

ActiveSheet.UsedRange.Cells.SpecialCells(xlCellTypeConstants) 

與:

Range("F:H").Cells.SpecialCells(xlCellTypeConstants) 
+0

嗨,非常感謝!有效!但是,我怎樣才能保持它僅僅將列F中的E和U移到H列? – yeocs93

+0

@ yeocs93請參閱**編輯#1 ** –

+0

如果我想在活動頁面中創建一個表格,說Range(A3:B7)並在每個單元格中輸入所有「U」或「E」等,以便它們可以將來改變了,我該如何修改代碼? – yeocs93

0

也許正則表達式?

Dim RE As Object 
Set RE = CreateObject("vbscript.regexp") 

Pattern = "(\w+\s)(U|E)" 
replacement = "$1" 
RE.Pattern = Pattern 

Regex = RE.Replace(Range("A1").Value, replacement) 

編輯;這將保留空間AAA如果你想刪除空間移動\s模式的一部分到另一個()如:"(\w+)(\sU)"