1
这是我正在看的。我有我导入使用下面的VBA的部分片:VBA - 检查公式是否在单元格运行缓慢
Sheets("Sheet1").Select
Range("D1:D1").Select
Selection.QueryTable.Refresh BackgroundQuery:=False
与此有关的问题是,每当我运行它,它打乱了我的公式中的A和B列。所以,我创建了一个子,将检查是否存在如下:
Sub fixAnB()
Dim sh As Sheet9
Dim rw As Range
Set sh = Sheet9
sh.EnableCalculation = False
'Sheets("Sheet1")
Dim i As Long
i = 0
Dim f1 As String, f2 As String
For Each rw In sh.Rows
i = i + 1
If i > 1 And sh.Cells(rw.Row, 4).Value <> "" Then
f1 = "=CONCATENATE(G" & i & ",J" & i & ")"
f2 = "=CONCATENATE(I" & i & ",H" & i & ",J" & i & ")"
If sh.Cells(rw.Row, 1).Formula <> f1 Then sh.Cells(rw.Row, 1).Formula = f1
If sh.Cells(rw.Row, 2).Formula <> f2 Then sh.Cells(rw.Row, 2).Formula = f2
End If
If sh.Cells(rw.Row, 4).Value = "" Then Exit For
Next rw
sh.EnableCalculation = True
End Sub
我这个问题是我可以20,000-200,000记录上板之间有任何地方。所以使用该子来修复这些公式大约需要10-15分钟。我在寻找解决方案之一:
- 一种方式,以便它不乱,当我输入我的数据
或 2.做出的方式引用来解决原来的问题修复者子跑的方式更快。
你觉得怎么样?
如果一切正常,但仅仅是缓慢的,我建议,而不是张贴到[代码审查(https://开头codereview.stackexchange.com/)。也就是说,在开始时尝试转换screenupdating('Application.ScreenUpdating = False')。 – BruceWayne
我实际上希望得到#1的答案,所以我根本不必运行子程序 –
如果您的数据设置为表格,会发生这种情况吗? – QHarr