首页 > 解决方案 > 拆分一个大排列

问题描述

我有两列,有 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

标签: excelvbapermutation

解决方案


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

但是,如果您不需要同时使用所有值,则可以以另一种方式工作。你有 40k 个块和 40k 个值。您的第二列在每 40k 块中相同。您只能将 40k 置换块的第一部分切换为您当时需要的第一列的值。就像数数一样。没有人写下所有数字来计算某些东西。您只需使用所需的数字部分。

(只要评论)


推荐阅读