由于数据库的限制(即他们不能使用分钟和最大值的相对参考,我添加一个人),我在每个单元格中添加一个单独的条件格式规则(选择是13列宽)810行。
不幸的是,此操作在i5 4670k上需要约35分钟。我正在运行的宏中进行了许多其他操作,但我已将速度问题与条件格式应用程序隔离开来。
有没有人有加快代码的建议?这是程序的精简版。
for RowCounter = FirstRow to Lastrow
for i = 0 to 12
' Add Databars
Range(FirstColumn & RowCounter).Offset(0, 2 * i).FormatConditions.AddDatabar
With Range(FirstColumn & RowCounter).Offset(0, 2 * i).FormatConditions(1)
.MinPoint.Modify xlConditionValueNumber, 0
.MaxPoint.Modify newtype:=xlConditionValueNumber, newvalue:= _
Range(FirstColumn & RowCounter).Offset(0, 2 * i + 1).Value
End With
Next i
Next RowCounter
编辑2:根据要求,这是截屏
基本上,有两种类型的列。需要格式化的列(绿色)以及格式将基于的列(黄色)。对于每一行,我都会查看其他每一列(在这种情况下,我只将格式应用于绿色列 - 因此i * 2偏移)。有时我想将条件格式(如果单元格中的值不是空白或日期)应用于单元格。如果我这样做,我想在右边(黄色列)立即应用基于单元格的最大值数据库。最终,黄色列将被隐藏。
编辑3:我找到了解决方案(见下文)。问题在于删除单元格的部分代码。如此大量的条件格式规则会大大减慢任何单元格的删除速度,导致程序运行速度非常慢。
答案 0 :(得分:0)
我终于找到了解决方案。
该程序的第一步是删除多个单元格。
第二步是应用~5000条件格式规则(对每个单独的单元格)。
尝试删除仍然适用所有规则的单元格的速度非常慢。因此,对此进行编码的最佳方法是首先执行所有单元格删除,然后在程序结束时应用所有条件格式。