gpt4 book ai didi

excel - 在单列中循环 22 行时内存不足

转载 作者:行者123 更新时间:2023-12-04 21:45:01 27 4
gpt4 key购买 nike

Excel 给我一个 007 内存错误。
这本书有160页。我的目标是转到每张表,遍历 B 列以找到利润所在的位置,然后转到下一列并拉出利润数字。然后在最后将这些信息合并到一张纸上。
我将在更大的范围内循环(例如,A1:G20)。我认为这个大范围是问题所在,但我仍然遇到只有 20 行 B 列的内存错误。

Sub EstimGP()
Dim a As Integer
Dim i As Integer
Dim EstimGP As Integer

rng = Range("B1:B22")
a = Application.Worksheets.Count

'Select Worksheet
For i = 1 To (a - 1)
Worksheets(i).Activate

'Loop cells
For Each Cell In rng

'THIS IS WHERE THE MEMORY ERROR OCCURS
If Cells.Value = "Estimated GP%:" Or "Estimated GP%: " Then EstimGP = ActiveCell.Offset(0, 1).Value

Worksheets("SummaryData").Activate
ActiveSheet.Cells(i, 10).Value = EstimGP
Next Cell
Next i

End Sub

最佳答案

Cellsimplicit ActiveSheet reference (Rubberduck 可以为您发现所有这些);不带参数返回 Range表示 ActiveSheet 的所有单元格的对象是(超过一百万行乘以超过 16K 列!)。
当它代表多个单元格时,Range.Value为您提供 2D Variant 中单元格的值大批。
所以If Cells.Value = "some string literal"通常会失败,因为您不能在数组和文字值之间使用比较运算符:这可能只是您要写 If Cell.Value... 的错字。引用 Cell循环变量;考虑重命名CurrentCell ,则条件变为If CurrentCell.Value... .请注意,循环会更改哪个工作表处于事件状态,因此任何隐含的 ActiveSheet该循环中的引用是危险的,不会产生预期的结果。
bool 表达式也有问题:你有 If something = "abc" Or "xyz" ;比较/逻辑运算符有 2 个操作数,每侧一个,它们应该是 bool 表达式,所以你想把它改成 If something = "abc" Or something = "xyz" .
考虑将外部循环更改为 For Each CurrentSheet In ActiveWorkbook.Worksheets ,那么你就可以工作了CurrentSheet无需Activate他们。

关于excel - 在单列中循环 22 行时内存不足,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68277708/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com