2016-12-02 114 views
1

我需要爲Replace函數進行Evaluate工作。代碼應該用「-0700」代替。的代碼與在C列中的數據一起提供如下:EXCEL VBA評估和替換

Set sh = ThisWorkbook.Sheets(1) 
Set rangc = sh.Range("c2:c10") 
For Each area In rangc.Areas 
    area.Value = Evaluate("IF(ROW(" & area.Address & ")," & Replace(area.Address, " -0700", "") & ")") 
Next area 

- 這是在片材中的數據:

ColumnC(original data) 
-0700 
sdfg -0700 
how -0700 saf 
2016-10-16 10:13:41 -0700 

ColumnC(After code is run) 
-700 
sdfg -0700 
how -0700 saf 
10/16/2016 10:13 

爲什麼代碼做了一些與第一行(-700),但並未取代「」。它也確實刪除了第四行中的「-700」(2016/10/16 10:13)。但它不適用於第二和第三行?我如何使它適用於字符串或數字?

我想用類似的代碼很快地替換另一個字符串中的部分字符串。我不能接受使用循環方法,因爲有成千上萬的行。

+1

*爲什麼代碼做了第一行(-700),但沒有用「」代替。它也確實刪除了第四行中的「-700」(10/16/2016 10:13)*我認爲這些刪除不是您的代碼替換的結果,而只是由Excel創建的一些自動格式化。 –

+0

你可能是對的,我要求一個不存在的評估解決方案。 – user1721447

+0

您正在將'Replace'功能應用於無需替換的地址。可能有某種方法使用'SUBSTITUTE',但我認爲'.Replace'方法將成爲這裏的解決方案。 – arcadeprecinct

回答

0

你不需要遍歷整個範圍。你可以使用.Replace方法,這是相當快:

Set sh = ThisWorkbook.Sheets(1) 
Set rangc = sh.Range("c2:c10") 
rangc.Replace What:=" -0700", Replacement:=""