如何在 Excel 中设置特定单元格不进行计算?

如何在 Excel 中设置特定单元格不进行计算?

我们有一张包含许多复杂公式(超过 6000 个 vlookup)的工作表。工作表上运行了一个宏,它每天多次循环遍历 3000 多行,持续 200 多天。每次更新时,所有公式都必须重新计算,宏才能继续运行。除了对值进行硬编码外,有没有办法选择某些单元格(其中包含公式),并关闭它们的计算,因为它们的值在剩余的运行时间内不会改变?

我们并不是想禁用整个工作表的计算,而只是禁用工作表中部分范围的计算。工作表的其余部分应该可以正常计算。

答案1

我认为您不能将特定单元格设置为不计算。但是,您可以暂时用宏中的实际值替换公式。实际上,这会产生相同的效果。有很多方法可以实现这一点,这里有一个想法。

制作一张包含您不想计算的范围的所有公式的工作表,但没有=,因此它们不会计算。然后在您的宏中,您可以执行以下操作来摆脱您的公式:

With Worksheets("sheetname").Range("A1:A100")
    .Formula = .Value
End With

这基本上相当于复制范围并执行选择性粘贴>>值。

恢复公式的方法取决于所有公式是否相同。如果相同,请使用:

With Worksheets("sheetname").Range("A1:A100")
    .Formula = "=" & Worksheets("formulasheet").Range("A1:A100").Text
End With

如果它们不同,您可以像这样循环遍历所有单元格:

Dim i&, firstrow&, lastrow&
Dim ws As Worksheet, formulaws As Worksheet
Set ws = Sheets("sheetname")
Set formulaws = Sheets("formulasheet")
firstrow = 1
lastrow = 100
For i = firstrow To lastrow
    ws.Cells(i, 1).Formula = "=" & formulaws.Cells(i, 1).Value
Next i

相关内容