循环整个细胞来改变一个具体的配方问题

我正在写一个函数,使用公式将整个列更改为新的值,下面我将详细介绍下面的代码。

问题是,它挂起,我不得不重新运行Excel,我不知道为什么。

Sub Button2_Click() Dim i As Long For i = 2 To Rows.Count Cells(i, 4).Formula = "=B" & i & "+6*3600000/86400000+25569" Next i End Sub 

那这是关于什么的? 我正在改变第四列的时间,因为我在B列的是纪元时间,这是我使用的公式,它适用于我的情况,如果我一个一个地尝试,但由于某种原因,它赢得了'整体工作。 我不确定做错了什么? 但是,我会很感激你的帮助。

一个一个的写入单元格非常缓慢。

一个接一个地写公式是比较慢的,因为在Excel将它们作为公式接受之前,每个公式都必须进行评估。

这样做一百万次,可以从字面上冻结Excel。

解决的办法是将它们全部写入(无循环):

 Sub Button2_Click() [d2:d1048576] = "=B2+6*3600000/86400000+25569" End Sub 

“进行质量计算的另一种方法是使用复制和粘贴方法。 将列转换为值会更好,以便表格不会反复计算。 这有助于防止表单挂起问题

 Sub Button2_Click() Range("D2").Formula = "=b1" & "+6*3600000/86400000+25569" Range("D2").Copy Range("D2:d1048576").PasteSpecial xlValues Application.CutCopyMode = False Range("D:D").Value = Range("D:D").Value End Sub