我有一个包含单元格的输入行:
- 三十
- 三十
- 三十
- 50
- 50
- 60
- 100
我想产生所有可能的组合长度为 3 的集合。因此,我希望行包含 3 个填充单元格,并且每行的元素将包含一个与顺序无关的唯一集合。换句话说,我不会得到 50、30、50 和 30、50、50。
我已经手工完成了这个,所以可能并不完美,但我相信我的输出应该是:
- 30,30,30
- 30,30,50
- 30,30,60
- 30,30,100
- 30、50、50
- 30、50、60
- 30、50、100
- 30、60、100
- 50,50,60
- 50、50、100
- 50、60、100
我知道我可以使用 VBA 生成这些,但我想知道:Excel 是否有任何用于生成这些行的本机命令?
答案1
您可以在 Excel 中使用该CROSSJOIN
功能(Excel 2010 和 2013 所需的 PowerPivot 插件,您可以免费下载来自 Microsoft)有关该CROSSJOIN
功能的详细信息,请参阅MSDN 网站。
总之,将您的基础数据设置为两个(重复)表table1
并table2
确保它们具有不同的列名,然后使用CROSSJOIN(table1, table2)
。
答案2
如果你还没有看过这个链接,它可能会对你有用。底部有一些公式示例。https://stackoverflow.com/questions/10692653/excel-vba-to-create-every-possible-combination-of-a-range
然而,CROSSJOIN
上面的答案是一种更清晰的方式。