2016-12-02 110 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:=""