我有两列,有40.000行。
我需要在两列之间进行置换并分析结果。
我知道进行40.000 x 40.000的排列将产生巨大的结果。我相信我可以通过添加条件来缩小结果的范围,因此我可以忽略一些输入。
仍然可以得到比工作表的行限制大得多的结果。
如何分割结果,以便每1.000.000个结果可以创建一个新的工作表/新的工作簿?
我的置换循环:
Sub Permutation()
Dim i As Long, k As Long, N As Long
N = 1
For i = 1 To 40000
For k = 1 To 40000
Cells(N, 3) = Cells(i, 1) & Cells(k, 2)
N = N + 1
Next k
Next i
End Sub
无论您要分析什么,都不能一步一步使用排列的所有结果。就像Stax所写,您将拥有16亿个单一值。即使每张纸写了100万,您也需要1600张纸。对于值中的每个字符,您需要1.6GB内存。我不知道您的mashine,但如果每个值的长度都为3个字符,则仅需要4.8GB内存即可存储数据。 Excel 32位只能处理4GB。这样就无法使用Excel。
但是,如果您不需要同时使用所有值,则可以使用其他方法。您有40k个带有40k个值的块。您的第二列在每40k块中相同。您必须仅将40k置换块的第一部分切换到当时所需的第一列的值。这就像数数。没有人写下所有数字来计算。您只需使用所需的数字部分。
(只要评论)