Excel:我如何加快查找和replace过程? 每个工作簿更改32,000个链接

我比较了30多个类别的大量数据。 每个类别的工作簿被保存到“MyFolder”中,并具有自己独特的名称(类别)。 工作簿中的数据可在名称与该类别相同的工作表中find:[Category.xls] CategoryYear_Final!

最好创build一个引用数据的标准模板,并生成所需的graphics和布局。 这一切运作良好。 现在是时候启动引擎,并通过修改引用名称来绘制所有类别的图表。

使用FIND和REPLACE每个工作簿需要20多分钟,因为有32000个地方(每个单元两个地方)需要更新。 Crikey!

任何关于如何更快地完成这个任务的build议,或者我只需要在一个坚实的20个小时看着Excel挣扎通过。

非常感谢迈克尔。

这是我会做的。 在更新之前:

Application.EnableEvents = False Application.ScreenUpdating = False Application.Calculation = xlCalculationManual 

完成更新后:

 Application.EnableEvents = True Application.ScreenUpdating = True Application.Calculation = xlCalculationAutomatic Application.CalculateFull 

您可能需要确保如果更新出现问题,则可以捕获错误并重新启用重新启用例程。 例如,如果您错误并且无法重新启用Excel ScreenUpdating,则会使用户无法使用会话(尽pipe如果您知道该怎么做,可以通过VBA编辑器立即窗口修复该问题)。

在Excel 2010中工作。这是超快的! 在约10秒内完成了851000的更换。

 Sub Macro1() Application.EnableEvents = False Application.ScreenUpdating = False Application.Calculation = xlCalculationManual ' fill your range in here Range("E3:CN9254").Select ' choose what to search for and what to replace with here Selection.Replace What:="", Replacement:="0", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False Application.EnableEvents = True Application.ScreenUpdating = True Application.Calculation = xlCalculationAutomatic Application.CalculateFull End Sub 

有可能你需要禁用计算(如上所述),也可能还有其他一些事情,如屏幕更新。

禁用计算:

如果您有Excel 2007或更高版本(使用function区):

  • 转到function区菜单(左上angular的圆圈)。
  • 点击右下angular的“Excel选项”。
  • 点击“公式”类别
  • 在计算选项下,select“手动”

将计算设置为手动将无济于事,也不会编写VBA代码。

你唯一需要做的就是保持所有相关的文件打开。

例如:
假设你有3个文件: ABC。 CA收集信息,但是现在需要从B的信息。

您使用find/replace更新链接。

解决方法是同时打开BC ,然后完美地工作。

Jon Helgason
统计冰岛