web-dev-qa-db-ja.com

Excelで組み合わせを生成する

セルを含む入力行があります:

  • 30
  • 30
  • 30
  • 50
  • 50
  • 60
  • 100

このセットから、長さ3のすべての可能な combinations を生成したいと思います。したがって、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にはこれらの行を生成するためのネイティブコマンドがありますか?

4
Jonathan Mee

ExcelでCROSSJOIN関数を使用できます(無料でダウンロードできるExcel 2010および2013にはPowerPivotアドインが必要です Microsoftから )。 CROSSJOIN関数の詳細は MSDN Webサイト にあります。

まとめると、ベースデータを2つの(重複した)テーブル_table1_&_table2_として設定し、それらに異なる列名があることを確認してから、CROSSJOIN(table1, table2)を使用します。

10
Mekki MacAulay

このリンクをまだ見ていない場合は、役に立つでしょう。下にいくつかの数式の例があります。 https://stackoverflow.com/questions/10692653/Excel-vba-to-create-every-possible-combination-of-a-range

ただし、上記のCROSSJOINの回答ははるかにクリーンな方法です。

4
Chris