Excel 如何解决vba中的溢出错误?
我必须分析一个非常大的数据文件,获取一些数据并将其放入另一个表中,直到我有大约20000行,但在这之后它会给我一个溢出错误,我需要它来分析大约200000行,这可能吗Excel 如何解决vba中的溢出错误?,excel,vba,overflow,Excel,Vba,Overflow,我必须分析一个非常大的数据文件,获取一些数据并将其放入另一个表中,直到我有大约20000行,但在这之后它会给我一个溢出错误,我需要它来分析大约200000行,这可能吗 Sub prueba() Dim i As Double, j As Double, k As Double, l As Double Dim i2 As Double Dim lrow As Integer Dim LastRow As Double lrow = Cells(Rows.Count, 1).End(xlUp
Sub prueba()
Dim i As Double, j As Double, k As Double, l As Double
Dim i2 As Double
Dim lrow As Integer
Dim LastRow As Double
lrow = Cells(Rows.Count, 1).End(xlUp).Row
LastRow = Range("E" & Rows.Count).End(xlUp).Row
i = 1
While Sheet1.Cells(18, i) <> "Suma de Máximo"
i = i + 1
Wend
j = 1
While Sheet1.Cells(18, j) <> "Suma de Stock"
j = j + 1
Wend
k = 1
While Sheet1.Cells(18, k) <> "Sum of Mínimo"
k = k + 1
Wend
If Sheet1.Cells(18, k) = "Sum of Mínimo" And Sheet1.Cells(18, j) = "Suma de Stock" Then
For i2 = 18 To LastRow - 1
If Sheet1.Cells(i2, k) <> Sheet1.Cells(i2, j) Then
Sheet2.Cells(i2 - 17, 1) = Sheet1.Cells(i2, 1)
Sheet2.Cells(i2 - 17, 2) = Sheet1.Cells(i2, 2)
Sheet2.Cells(i2 - 17, 3) = Sheet1.Cells(i2, i)
Sheet2.Cells(i2 - 17, 4) = Sheet1.Cells(i2, k)
Sheet2.Cells(i2 - 17, 5) = Sheet1.Cells(i2, j)
End If
Next i2
End If
End Sub
Sub-prueba()
尺寸i为双精度,j为双精度,k为双精度,l为双精度
尺寸i2为双精度
Dim lrow作为整数
将最后一行变暗为双行
lrow=单元格(Rows.Count,1).结束(xlUp).行
LastRow=范围(“E”和Rows.Count).End(xlUp).Row
i=1
而表1.单元格(18,i)“Máximo之家”
i=i+1
温德
j=1
而表1.单元格(18,j)“库存量”
j=j+1
温德
k=1
而表1.单元格(18,k)“Mínimo之和”
k=k+1
温德
如果Sheet1.Cells(18,k)=“Mínimo之和”和Sheet1.Cells(18,j)=“Suma de Stock”,则
对于i2=18至最后一行-1
如果表1.单元格(i2,k)表1.单元格(i2,j),则
表2.单元格(i2-17,1)=表1.单元格(i2,1)
表2.单元格(i2-17,2)=表1.单元格(i2,2)
表2.单元格(i2-17,3)=表1.单元格(i2,i)
表2.单元格(i2-17,4)=表1.单元格(i2,k)
表2.单元格(i2-17,5)=表1.单元格(i2,j)
如果结束
下一个i2
如果结束
端接头
更换:
Dim i As Double, j As Double, k As Double, l As Double
Dim i2 As Double
Dim lrow As Integer
Dim LastRow As Double
与:
这是一个16位有符号整数类型,最大值为32767(2^15-1):一旦将其赋值为32768或更高,它就会溢出。任何工作表的行数都比这多出许多倍,这使得Integer
成为不适合用于存储工作表行号的数据类型
改为使用Long
,它是一种32位有符号整数类型,最大值为2^31-1,大于Excel工作表的行数
Double
是一种浮点数据类型,用于行号没有多大意义。考虑使用有意义的名称而不是单字母变量,但请注意,这些循环非常低效:
k=1
而表1.单元格(18,k)“Mínimo之和”
k=k+1
温德
使用
Range。当您需要快速查找包含特定内容的单元格时,请查找。尽量长时间更改lrow
Dim i As Long, j As Long, k As Long, l As Long
Dim i2 As Long
Dim lrow As Long
Dim LastRow As Long
Dim lrow As Integer
k = 1
While Sheet1.Cells(18, k) <> "Sum of Mínimo"
k = k + 1
Wend