Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 如何解决vba中的溢出错误?_Excel_Vba_Overflow - Fatal编程技术网

Excel 如何解决vba中的溢出错误?

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

我必须分析一个非常大的数据文件,获取一些数据并将其放入另一个表中,直到我有大约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).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