将公式写到整个范围,或仅使用IF语句遍历单元格。哪个更快?

时间:2019-02-18 14:53:01

标签: excel vba

我正在使用宏将公式重写为某个范围,以防用户无意间修改了单元格。 遍历每个单元格并修复错误会比重写整个范围更快吗?有想法吗?

我曾尝试保护床单和某些范围,但偶尔还是有问题。

当前使用:

Sheet2.Range("TableSh[Produced]").Formula = "=SUMIF(TableP[Run],[@Run],TableP[Good PCS])"

这↓会更快吗?

For Each R In Range("TableSh[Produced]")

      If Not R.Formula = "=SUMIF(TableP[Run],[@Run],TableP[Good PCS])" Then
           R.Formula = "=SUMIF(TableP[Run],[@Run],TableP[Good PCS])"
      End If
Next

1 个答案:

答案 0 :(得分:0)

如果只运行它们两个并停止时间(您可以很容易地回答自己),那么问题“这个↓会更快吗?” 显然是不必要的。

就像Vityata所说的那样,在极少数情况下,使用循环比使用 not 循环更快。 例如,如果公式将是重载计算,则该循环在某些情况下可能会受益,尤其是当它只需要编写非常详细的公式时(因此,我们只有一个vew重载计算,而不是一个整列)。

一般来说,如果有其他解决方案,我总是要尽量避免循环。但是,没有哪个更快的答案。如有疑问,请对数据进行更好的测试,这在很大程度上取决于实际情况。