分割大排列

问题描述 投票:0回答:1

我有两列,有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
excel vba permutation
1个回答
1
投票

无论您要分析什么,都不能一步一步使用排列的所有结果。就像Stax所写,您将拥有16亿个单一值。即使每张纸写了100万,您也需要1600张纸。对于值中的每个字符,您需要1.6GB内存。我不知道您的mashine,但如果每个值的长度都为3个字符,则仅需要4.8GB内存即可存储数据。 Excel 32位只能处理4GB。这样就无法使用Excel。

但是,如果您不需要同时使用所有值,则可以使用其他方法。您有40k个带有40k个值的块。您的第二列在每40k块中相同。您必须仅将40k置换块的第一部分切换到当时所需的第一列的值。这就像数数。没有人写下所有数字来计算。您只需使用所需的数字部分。

(只要评论)

© www.soinside.com 2019 - 2024. All rights reserved.