excel - 拆分一个大排列
问题描述
我有两列,有 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 置换块的第一部分切换为您当时需要的第一列的值。就像数数一样。没有人写下所有数字来计算某些东西。您只需使用所需的数字部分。
(只要评论)
推荐阅读
- python - python 3.5 / 我正在尝试在 python 中的文件夹中绘制图像并在每个文件夹上绘制一个框,然后关闭它并打开下一个
- ibm-watson - 关于扬声器标签如何在 android 中显示扬声器标签
- javascript - 从 div 获取 data-id 的函数
- angular - 通过 HTTP CRUD 工作流上的通用方法发送标头
- javascript - 发送 JSON 到不同的地址然后 res
- python-3.x - Web Scraping Linkedin 分页不适用于搜索
- svg - 外部 SVG 中的anime.js querySelectorAll() 会破坏属性“目标:”的 [NodeList]
- c++ - 如何在 C++ 中创建一个算法来查找不重复的集合的变体(即 n 个元素,选择 k)?
- tsql - 在 t/sql 中使用 group by 将多行合并为一个
- python - Python - 按时间间隔合并数据(R data.table 模仿?)