Excel 是否有更好的方法,从性能角度来看,做到这一点?
是否有一种更快的条件格式单元格引用方法 代码示例:Excel 是否有更好的方法,从性能角度来看,做到这一点?,excel,vba,performance,conditional-formatting,Excel,Vba,Performance,Conditional Formatting,是否有一种更快的条件格式单元格引用方法 代码示例: For Each cell In irow For i = 1 To arr_size If cell > start(i) - arr1(i) And start(i) > Var1 And cell <= Var2 Then cell.Interior.ColorIndex = 22 Exit For End If Next i
For Each cell In irow
For i = 1 To arr_size
If cell > start(i) - arr1(i) And start(i) > Var1 And cell <= Var2 Then
cell.Interior.ColorIndex = 22
Exit For
End If
Next i
Next cell
应该稍微快一点:
Dim v, rng As Range
For Each cell In irow
For i = 1 To arr_size
If start(i) > Var1 Then
v = cell.Value
If v > start(i) - arr1(i) Then
If v <= Var2 Then
If rng Is Nothing then
Set rng = cell
Else
Set rng = aplication.union(rng, cell)
End If
Exit For
End If
End If
End If
Next i
Next cell
If Not rng Is Nothing then rng.Interior.ColorIndex = 22
这特别慢吗?需要多长时间?超过多少个单元和多大的阵列?“你要关闭屏幕更新吗?”Tim Williams问得好,如果条件满足,它将在160个单元上运行两次,阵列的大小将小到25个。问题是我必须一次运行多达40个这样的宏。是的,我正在关闭所有这些…我唯一能想到的是如何加快速度,将所有需要颜色的细胞加入到一个数组中,并在循环结束时立即在该数组上进行cokouring。通常情况下,与单元格的交互占用的时间最多,因此将其从40减少到1可能会节省一些时间。也可以尝试嵌套if测试,而不是使用And。这样他们会在第一个错误上停止,如果你像那样给一个连续的块上色,你可以试着记下开始和结束单元格,然后一次给块上色。这似乎有点复杂,虽然有点改进,但你能详细说明一下“一次给块上色”的解决方案吗,因为我有连续的单元格上色。另外,我希望我能提供更多的代码,但这里的格式限制了我们,谢谢你提供的信息,你只会看到轻微的改进。我所说的一次着色不是指一个细胞一个细胞的着色:我已经在上面做了调整,所以我不确定你能在这个方向上走多远。也许你可以做一些小的改变,但是如果没有剩下的代码和更多的上下文信息,你很难提出建议。我几乎按照你的公式重写了代码,它真的很有效,任何改进都会很好,但这确实是显而易见的!在excel 2016上,它现在几乎可以正常工作。仅仅说声谢谢是不够的!