在 Excel 中生成组合

在 Excel 中生成组合

我有一个包含单元格的输入行:

  • 三十
  • 三十
  • 三十
  • 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 网站

总之,将您的基础数据设置为两个(重复)表table1table2确保它们具有不同的列名,然后使用CROSSJOIN(table1, table2)

答案2

如果你还没有看过这个链接,它可能会对你有用。底部有一些公式示例。https://stackoverflow.com/questions/10692653/excel-vba-to-create-every-possible-combination-of-a-range

然而,CROSSJOIN上面的答案是一种更清晰的方式。

相关内容