在Excel Cell中累积更改值

时间:2013-08-27 18:19:30

标签: excel vba excel-vba

我目前在excel运行一个利用实时数据的交易算法,因此我的A1单元格的值不断变化。

例如:

A1 = 3     at 930
A1 = 2     at 931
A1 = 100   at 932

A1s值在整个过程中发生变化,我想继续添加这些值。

所以在我的例子中答案是105.

有没有办法在excel中累积单元格A1的值?我不关心时间,我只需要价值。

我没有更改值的VBA。它实际上是一个Bloomberg终端加载项,用于输入数据。

感谢。

1 个答案:

答案 0 :(得分:3)

使用on workheet change事件并将结果保存在不同的单元格中。将此代码放在相关表格的代码中。

Private Sub Worksheet_Change(ByVal Target As Range)

Static lLong As Long

If Cells(1, 1).Value <> lLong Then
    lLong = Cells(1, 1).Value

    Cells(2, 1).Value = Cells(2, 1).Value + Cells(1, 1).Value
End If

End Sub

编辑:

在阅读jerussels评论后,我看到它需要更复杂一些。您需要将变量存储为全局变量,并且必须使用工作簿打开事件来存储初始值。

同样如tigeravatar所说,如果有分数的可能性,它可能是最好的双倍。

所以标准模块的顶部需要行

dim gdDouble as double

在您需要的工作簿代码中:

Private Sub Workbook_Open()
    gdDouble = Sheets("sheet1").Cells(1, 1).Value
End Sub

将“sheet1”替换为工作表名称。

在你需要的表格中

Private Sub Worksheet_Change(ByVal Target As Range)

If Cells(1, 1).Value <> gdDouble Then
    gdDouble = Cells(1, 1).Value
    Cells(2, 1).Value = Cells(2, 1).Value + Cells(1, 1).Value
End If

End Sub