【发布时间】: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