Excel 需要更快地计算数据

Excel 需要更快地计算数据,excel,worksheet-function,worksheet,vba,Excel,Worksheet Function,Worksheet,Vba,我正在与这个代码斗争,请帮助我。我想在工作表中记录这个代码的变化,但它会一个单元格一个单元格地进行,这会使它变慢。我的活动工作表以200ms的速度运行,这在代码执行其作业值更改时非常快。有没有一种方法可以在同一时间显示值,而不是转到每个单元格。我脑子里有这么多困惑,如果我的要求没有任何意义,请原谅我 Private Sub Worksheet_Change(ByVal Target As Range) Const Scope = "G9:H9,G11:H11,G13:H13,G15:H15,G

我正在与这个代码斗争,请帮助我。我想在工作表中记录这个代码的变化,但它会一个单元格一个单元格地进行,这会使它变慢。我的活动工作表以200ms的速度运行,这在代码执行其作业值更改时非常快。有没有一种方法可以在同一时间显示值,而不是转到每个单元格。我脑子里有这么多困惑,如果我的要求没有任何意义,请原谅我

Private Sub Worksheet_Change(ByVal Target As Range)

Const Scope = "G9:H9,G11:H11,G13:H13,G15:H15,G17:H17,G19:H19,G21:H21,G23:H23,G25:H25,G27:H27,G29:H29,G31:H31,G33:H33,G35:H35,G37:H37,G39:H39,G41:H41,G43:H43,G45:H45,G47:H47,G49:H49,G51:H151,G53:H53,G55:H55,G57:H57,G59:H59,G61:H61,G63:H63,G65:H65,G67:H67" ' monitoring area

Static oData As New Dictionary
Dim rCells As Range
Dim oCell
Dim dDelta

Set rCells = Application.Intersect(Target, Target.Parent.Range(Scope))
If Not rCells Is Nothing Then
    For Each oCell In rCells
        With oCell
            dDelta = oData(.Address)
           .Offset(0, 1).Value = dDelta
            oData(.Address) = .Value
        End With
    Next
End If

结束Sub

您是否尝试过关闭屏幕更新?将这条线添加到子线的正下方,看看这是否有助于提高速度

Application.ScreenUpdating = False

使用阵列在内存中执行所有操作都比直接在工作表上进行更改要快。另外,请注意,工作表上的每个更改都会触发另一个更改事件。因此,您编写的sub正在一次又一次地递归地调用自己。在工作表上进行这些更改时,应关闭事件。另一点:词典oData在哪里填充?请将此部分包含在上述代码段中。