【问题标题】:Overflow when processing historical price data (VBA)处理历史价格数据 (VBA) 时溢出
【发布时间】:2015-10-17 04:08:02
【问题描述】:

我正在编写一个宏,它从一个 excel 文件中读取价格数据,将它们写入另一个 excel 文件并进行基本计算(例如退货)。数据由 2600 x 100 个数据点组成。

当我运行它时,我有一个溢出错误!看起来它处理了太多数据。是不是电脑内存的问题? (我有一台配备 4GB 内存的现代笔记本电脑)还是与计算过程中数据的存储方式有关?我没有得到的是,如果我尝试直接在电子表格中进行这种计算,我不会收到溢出消息。

顺便说一句,我试图避免使用 Access。

感谢您的帮助。

山姆 暗淡我只要 暗淡 j 只要 暗淡 k 只要 暗淡 只要变暗 昏暗的时间

' FYI 年考虑 = 10

For j = 1 To Group(k).TickerCount
    For m = 1 To Quotes(j, k).ContinuationCount
        For i = 1 To YearsConsidered * 261
            If Sheets(j).Cells(i - GivenPeriod, 4 * m - 3) = 0 Then
                Sheets(j).Cells(i, 4 * m - 2) = 0
            Else
                Sheets(j).Cells(i, 4 * m - 2) = (Sheets(j).Cells(i, 4 * m - 3) - Sheets(j).Cells(i - GivenPeriod, 4 * m - 3)) / Sheets(j).Cells(i - GivenPeriod, 4 * m - 3)
            End If
        Next i
    Next m
Next j

【问题讨论】:

  • 尝试发布一些代码。
  • For j = 1 To Group(k).TickerCount For m = 1 To Quotes(j, k).ContinuationCount For i = 1 To YearsConsidered * 261 If Sheets(j).Cells(i - GivenPeriod, 4 * m - 3) = 0 Then Sheets(j).Cells(i, 4 * m - 2) = 0 Else Sheets(j).Cells(i, 4 * m - 2) = (Sheets(j) .Cells(i, 4 * m - 3) - Sheets(j).Cells(i - GivenPeriod, 4 * m - 3)) / Sheets(j).Cells(i - GivenPeriod, 4 * m - 3) End If下一个 i 下一个 m 下一个 j
  • 无法保持我漂亮的格式...
  • 我想我应该更具体一些。请将代码放在问题中,并包含变量声明并指出错误发生的位置。如果i 被声明为Integer,则将其更改为Long
  • 谢谢罗里。完毕。我将所有循环变量声明为 long 而不是整数:不是在崩溃之前执行 60% 的计算,而是只执行 10%。

标签: vba excel stack-overflow large-data


【解决方案1】:

我在循环大量数据点时遇到过类似的情况。出于某种原因,如果我将公式条目编码到一系列单元格中(同时),则不会发生这种情况;就像您在电子表格中手动选择一个范围时一样,输入一次公式,然后按 Ctrl+Enter。这需要正确使用 $ 符号(绝对位置与关系位置)。
不看代码很难准确判断问题出在哪里,所以不确定这是否是您的问题...

【讨论】:

  • 谢谢。我不确定我是否理解您的解决方案。
  • 宏正在逐个单元格读取价格(执行检查)并将其复制到另一个电子表格。这部分没问题。当我开始使用这些价格计算回报时,出现溢出错误。我没有将结果放入电子表格,而是首先尝试使用用户定义的数据类型来存储值,但我遇到了溢出问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-11-19
  • 2018-12-17
  • 1970-01-01
  • 1970-01-01
  • 2011-03-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多