Excel "Overflow" 500,000 行错误
Excel "Overflow" error for 500,000 rows
我有一个 excel sheet 有 500,000 行。它有 3 列,格式如下
Staff Locations Roles
1 Location1 Role1
1 Location2 Role1
2 Location2 Role2
3 Location3 Role3
3 Location3 Role4
输出格式如下
Staff Locations Roles
1 Location1, Location2 Role1
2 Location2 Role2
3 Location3 Role3
3 Location3 Role4
我正在使用下面的 vbscript,如果行数很小,它就可以工作。
Sub Sort_Duplicates()
Dim lngRow, lngRow2 As Long
With ActiveSheet
Dim flag As Integer: flag = 0
Dim i As Integer
Dim columnToMatch As Integer: columnToMatch = 1
Dim column2ToMatch As Integer: column2ToMatch = 3
Dim columnToConcatenate As Integer: columnToConcatenate = 2
lngRow = .Cells(538537, columnToMatch).End(xlUp).Row
.Cells(columnToMatch).CurrentRegion.Sort key1:=.Cells(columnToMatch), Header:=xlYes
Do
If .Cells(lngRow, columnToMatch) = .Cells(lngRow - 1, columnToMatch) Then
'flag = 1
i = 1
lngRow2 = lngRow
Do While Cells(lngRow2, columnToMatch) = .Cells(lngRow2 - i, columnToMatch)
If .Cells(lngRow2, column2ToMatch) = .Cells(lngRow2 - i, column2ToMatch) Then
.Cells(lngRow2, columnToConcatenate) = .Cells(lngRow2, columnToConcatenate) & ", " & .Cells(lngRow2 - i, columnToConcatenate)
.Rows(lngRow2 - i).Delete
End If
i = i + 1
Loop
lngRow2 = lngRow2 - 1
End If
' If flag = 1 Then
' lngRow = lngRow2
' flag = 0
' Else
lngRow = lngRow - 1
'End If
Loop Until lngRow = 1
End With
End Sub
当我尝试对包含 500,000 行的 sheet 进行排序时,它开始排序但抛出一个弹出式错误 "Overflow",没有其他消息。我试着用 90,000 来做这个,但还是一样。有什么建议可以解决这个问题吗?
提前致谢
首先将 all Integer 变量的 Dim 更改为 长.
我有一个 excel sheet 有 500,000 行。它有 3 列,格式如下
Staff Locations Roles
1 Location1 Role1
1 Location2 Role1
2 Location2 Role2
3 Location3 Role3
3 Location3 Role4
输出格式如下
Staff Locations Roles
1 Location1, Location2 Role1
2 Location2 Role2
3 Location3 Role3
3 Location3 Role4
我正在使用下面的 vbscript,如果行数很小,它就可以工作。
Sub Sort_Duplicates()
Dim lngRow, lngRow2 As Long
With ActiveSheet
Dim flag As Integer: flag = 0
Dim i As Integer
Dim columnToMatch As Integer: columnToMatch = 1
Dim column2ToMatch As Integer: column2ToMatch = 3
Dim columnToConcatenate As Integer: columnToConcatenate = 2
lngRow = .Cells(538537, columnToMatch).End(xlUp).Row
.Cells(columnToMatch).CurrentRegion.Sort key1:=.Cells(columnToMatch), Header:=xlYes
Do
If .Cells(lngRow, columnToMatch) = .Cells(lngRow - 1, columnToMatch) Then
'flag = 1
i = 1
lngRow2 = lngRow
Do While Cells(lngRow2, columnToMatch) = .Cells(lngRow2 - i, columnToMatch)
If .Cells(lngRow2, column2ToMatch) = .Cells(lngRow2 - i, column2ToMatch) Then
.Cells(lngRow2, columnToConcatenate) = .Cells(lngRow2, columnToConcatenate) & ", " & .Cells(lngRow2 - i, columnToConcatenate)
.Rows(lngRow2 - i).Delete
End If
i = i + 1
Loop
lngRow2 = lngRow2 - 1
End If
' If flag = 1 Then
' lngRow = lngRow2
' flag = 0
' Else
lngRow = lngRow - 1
'End If
Loop Until lngRow = 1
End With
End Sub
当我尝试对包含 500,000 行的 sheet 进行排序时,它开始排序但抛出一个弹出式错误 "Overflow",没有其他消息。我试着用 90,000 来做这个,但还是一样。有什么建议可以解决这个问题吗?
提前致谢
首先将 all Integer 变量的 Dim 更改为 长.