2016-03-01 76 views
1

我想搜索某些字符串值的單元格的範圍,並用其他東西替換它們。目前,我正在試圖從AS22檢查一個列範圍到?搜索特定字符串的單元格範圍,並替換

我想尋找的是:

Green 
Amber 
Red 

並將其替換:

On Track 
Minor Variance 
Major Variance 

這是我到目前爲止的代碼,但它不工作,我不接受任何錯誤 - 不知道有什麼錯誤。

Dim i As Variant 
Dim k As Variant 
    i = ("Green, Amber, Red") 
    k = ("On Track, Minor Variance, Major Variance") 
    Columns("AS").Replace What:=i, Replacement:=k, lookat:=xlPart, MatchCase:=False 

理想情況下,我想一次搜索AS,AT,AU列,而不必重複三次代碼。

任何人都瞭解的原因一些輕爲什麼這個代碼將無法正常工作

+0

你爲什麼在看'xlPart'?你想用'StoMajor Variance'替換'Stored'嗎? – Jeeped

+0

這是我在Google搜索中找到的一個解決方案,曾嘗試過幾件事,但無法使其正常工作 – user3088476

回答

3

考慮:

Sub qwerty() 
     With Range("AS:AU") 
      .Replace what:="Green", Replacement:="On Track" 
      .Replace what:="Amber", Replacement:="Minor Variance" 
      .Replace what:="Red", Replacement:="Major Variance" 
     End With 
End Sub 
+0

謝謝,這是一個更簡單的解決方案。它工作得很好 – user3088476

2

使用指定的值作爲陣列到相應的Variant變量,然後循環通過他們的LBound functionUBound function來定義範圍。

Dim i As Variant, k As Variant, w As Long 

i = Array("Green", "Amber", "Red") 
k = Array("On Track", "Minor Variance", "Major Variance") 

With Worksheets("Sheet1") '<~~you should know what worksheet you are on~ 
    For w = LBound(i) To UBound(i) 
     .Columns(45).Replace what:=i(w), replacement:=k(w), _ 
         lookat:=xlWhole, MatchCase:=False 
    Next w 
End With 

按照我上面的評論,我已經與lookat:=xlWhole更換您的lookat:=xlPart

0
Dim sht As Worksheet 
Dim fndList As Variant 
Dim rplcList As Variant 
Dim x As Long 

fndList = Array("Red", "Amber", "Green") 
rplcList = Array("On track", "Minor Variance", "Minor Variance") 

'Loop through each item in Array lists 
    For x = LBound(fndList) To UBound(fndList) 
    'Loop through each worksheet in ActiveWorkbook 
     For Each sht In ActiveWorkbook.Worksheets 
     sht.Cells.Replace What:=fndList(x), Replacement:=rplcList(x), _ 
      LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, _ 
      SearchFormat:=False, ReplaceFormat:=False 
     Next sht 

    Next x