2014-08-27 87 views
4

我已經寫了一些宏來將一個數據加載格式化爲相同的接受格式,我們從拒絕的程序拒絕拉我們想要的數據,但理論上它不會Excel中難以改變。Excel:查找和替換宏 - 只有一列

它被設置爲運行的方式是爲修飾符分配宏,然後是一個'全部運行'宏,它們只是對它們全部進行調用。

目前我有:

Sub ReplaceTitleMs() 
' 
' Strips Mrs from Headteacher Name 
' 
' 
' 
Columns("V").Select 
Cells.Replace What:="Ms ", Replacement:="", LookAt:=xlPart, SearchOrder _ 
    :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False 
End Sub 

但是,當運行此,它從整個板條Ms和一列要求MS仍然處於細胞(這是列W)

的例如數據的實際上是:

Ms Helen Smith 
Ms Brenda Roberts 
Ms Kirsty Jones 

但也有被使用,所以我想只運行一個查找和對必須由宏選擇列替換諸多稱號。

宏作品找到我想要的列...我只需要將其限制到該列!

+0

的問題是,使用'Cells'而不使用範圍對其進行限定意味着工作表上的所有單元格。第V列的「選擇」無關緊要。 – citizenkong 2014-08-27 15:15:42

+0

我確定這可能是有問題的部分,只是不太確定該怎麼做!謝謝你們 – 2014-08-28 07:26:59

回答

7

您需要正確限定範圍爲Replace()方法

Sub ReplaceTitleMs() 
    Columns("V").Replace What:="Ms ", _ 
          Replacement:="", _ 
          LookAt:=xlPart, _ 
          SearchOrder:=xlByRows, _ 
          MatchCase:=False, _ 
          SearchFormat:=False, _ 
          ReplaceFormat:=False 
End Sub 
+1

這是完美的,我知道我並不遙遠,但重新錄製並沒有像那樣製作。非常感謝! – 2014-08-27 14:58:40

4

根據您的數據(這是正常capitilised),以避免錯誤的比賽,你應該設置MatchCase爲True,以避免撲殺的 喜歡Mrs Nancy AdamsMrs Nancy Ada

Columns("V").Replace "Ms ", vbNullString, xlPart, xlByRows, True 

要完全防彈,你要麼

  1. 使用AutoFilter用於檢測和移除
  2. 構建範圍相匹配的與FindFindNext,然後僅去除前三個字符其中匹配是正確
+0

++與案例的好處。 – 2014-08-29 12:18:31