excel vba排列超过1048576行

我试图在excel中创build6个数字的排列列表,每个列表都在自己的列A-F中,每个数字都是1-38。 当我运行VBA时,我发现这个排列远远超过了excel中可用的行1048576,所以VBA结束于这一点。 我想要一个VBA,当行到达1048576在任何表和排列没有完成它将只是创build一个新的工作表,并继续在前面的工作表停止,并自动创build工作表,直到排列结束。 我search了通过的问题,但没有发现帮助。 任何专家的帮助将不胜感激。

码:

Sub Perm() Dim a As Integer Dim b As Integer Dim c As Integer Dim d As Integer Dim e As Integer Dim f As Integer n = 1 For a = 1 To 38 For b = 1 To 38 For c = 1 To 38 For d = 1 To 38 For e = 1 To 38 For f = 1 To 38 Cells(n, 1).Value = a Cells(n, 2).Value = b Cells(n, 3).Value = c Cells(n, 4).Value = d Cells(n, 5).Value = e Cells(n, 6).Value = f n = n + 1 Next f Next e Next d Next c Next b Next a End Sub 

这应该为你做:

 Sub Perm() Dim a As Integer Dim b As Integer Dim c As Integer Dim d As Integer Dim e As Integer Dim f As Integer Dim n As Long Dim maxRows As Long Dim sheetNumber As Integer Dim loopCounter As Integer maxRows = 1048576 loopCounter = 38 sheetNumber = 1 n = 1 ActiveWorkbook.Sheets.Add After:=Worksheets(Worksheets.Count) ActiveSheet.Name = "Sheet-" & sheetNumber Application.ScreenUpdating = False For a = 1 To loopCounter For b = 1 To loopCounter For c = 1 To loopCounter For d = 1 To loopCounter For e = 1 To loopCounter For f = 1 To loopCounter Cells(n, 1).Value = a Cells(n, 2).Value = b Cells(n, 3).Value = c Cells(n, 4).Value = d Cells(n, 5).Value = e Cells(n, 6).Value = f If n = maxRows Then sheetNumber = sheetNumber + 1 ActiveWorkbook.Sheets.Add After:=Worksheets(Worksheets.Count) ActiveSheet.Name = "Sheet-" & sheetNumber n = 0 End If n = n + 1 Next f Next e Next d Next c Next b Next a Application.ScreenUpdating = False End Sub 

这将创build一个名为“Sheet-1”的工作表并将其填充到1048576行。然后,它将创build一个名为“Sheet-2”的新工作表并重复,直到该工作表已满。

最好禁用ScreenUpdating密集的单元格写作,因为它会大大减less运行时间。

祝你好运,因为它可能需要一段时间。 正如另一张海报所说,它将需要将近3000张工作表。 希望你的机器上有足够的内存。