2017-04-17 352 views
1

我只能在最後替換該變體。我們可以這樣做,如果有的話,請任何人都可以幫忙嗎?Excel vba查找和替換

代碼:

Worksheets("Part_Number").Columns("F").Replace What:="-G", Replacement:=" ", SearchOrder:=xlByColumns, MatchCase:=True 

輸入:

WA-2001-G 
WA-GSK024 

預期輸出:

WA-2001 
WA-GSK024 
+2

花時間作出反應,並想出新的之前http://stackoverflow.com/questions/給「信用」來這裏之前的帖子43376774/vba-to-create-new-sheet-with-file-name-using-save-dialog-box-and-save-as-csv -f and http://stackoverflow.com/questions/43354108/how-分配屬性到複選框 –

+3

我會比@ShaiRado更直接:6個問題沒有接受答案...在你最後一個問題中,你甚至不能爲簡單的搜索而煩惱有人建議!爲什麼人人都想要幫助你? – Ambie

回答

2

在您What:="-G"你需要添加"space-Gspace"

假設這是你的努力在這裏做

Option Explicit 
Public Sub Example() 
    With ThisWorkbook.Sheets("Part_Number").Range("F:F") 
     .Replace " -G ", " ", xlPart 
    End With 
End Sub 

示例例
WA-2001 -G WA-GSK024
對此
WA-2001 WA-GSK024


編輯使用這一點,如果沒有空間

Option Explicit 
Public Sub Example() 
    Dim rng As Range 

    With ThisWorkbook.Sheets("Part_Number") 
     For Each rng In .Range("F1", Range("F99").End(xlUp)) 
      If Right(rng.Value, 2) = "-G" Then 
       Debug.Print rng.Value ' Immediate Window 
       rng.Value = Mid(rng.Value, 1, Len(rng.Value) - 2) 
       Debug.Print rng.Value ' Immediate Window 
      End If 
     Next 
    End With 
End Sub 
+0

感謝您的回覆@ 0m3r –

+0

我的要求是在它必須找到並替換-G字的末尾,但是如果我使用上面它將替換即使它在中間。 –

+0

我的輸入是1. WA-2001-G(這是一個輸入) –

2

一個這樣的方式通過循環Column F並檢查每個單元中的最後兩個字符是否爲-G並刪除是否存在。請參閱下面的代碼:

Public Sub Demo() 
    Dim lastRow, i As Long 
    Dim myString As String 
    Dim c As Range 
    'get the last row with data in Column `F` 
    lastRow = Cells(Rows.Count, "F").End(xlUp).Row 

    For Each c In ThisWorkbook.Sheets("Sheet1").Range("F1:F" & lastRow) 
     If Len(c.Value) <> 0 Then 
      If Right(c.Value, 2) = "-G" Then c.Value = Left(c.Value, Len(c.Value) - 2) 
     End If 
    Next c 
End Sub 

讓我知道是否有什麼不明確。

+1

感謝您的幫助,本代碼也能正常工作並符合我的要求@ Mrig –

1

或者你可以嘗試這樣的事情......

Sub ReplaceStrings() 
    Dim ws As Worksheet 
    Dim lr As Long 
    Set ws = Sheets("Part_Number") 
    ws.Activate 
    lr = Cells(Rows.Count, "F").End(xlUp).Row 
    Range("F2:F" & lr).Value = Evaluate("If(Right(Trim(F2:F" & lr & "),2)=""-G"",Left(Trim(F2:F" & lr & "),Len(Trim(F2:F" & lr & "))-2),F2:F" & lr & ")") 
End Sub 
+0

我誤解了op問題:-) – 0m3r

+2

我明白了。最初的要求並不十分清楚,但是您最終根據OP的要求對其進行了調整。 :) – sktneer