Excelで複数要素の並べ替えパターンをすべて生成・列挙する例です。ワークシート関数では困難ですが2024年秋に利用可能となったPython in Excelを使って簡単に実現できます。
手順
次の画像では、B2:D2の範囲に入力されている3つの要素A,B,Cを並べ替えた6つのパターンをすべて書き出しています。
手順は次の通りです。
- F2セルに次のコードを入力します。具体的にはセルに「=PY(」と入力するか数式タブの「Pythonの挿入」をクリックしてセルが変化したところでコードを入力します。
import itertools items = xl("B2:D2").unstack() list(itertools.permutations(items))
- 数式バーの左側に表示されるアイコンをクリックして選択肢から「Excelの値」を選択します(アイコンはに変化します)。
- Ctrl+Enterキーで確定すれば完了です。
なお、2番と3番は逆でもいいです。いったんセルの表示が「[PY]list」のようになりますがをクリックして選択肢から「Excelの値」を選択することで値が表示されます。
コードの説明ですが、各種の繰り返し処理に便利なitertoolsモジュールを使っています。最初のシートのA1セルに記しておけば他の箇所ではimportを省略できますが、常に記しておいた方が無難かと思います。
参照したセルのデータはpandas.DataFrameとして取得されます。これは(参照範囲が1行や1列でも)2次元のデータとなるのでunstackでフラットにし(pandas.Seriesになります)、順列を生成するitertools.permutationsを適用しています。変数への代入を省けば1行で済みますが、あえて分けました。
なお、permutationsの第2引数で抽出する要素数を指定できます。
次の画像は4つの要素から2つを出して並べ替える全パターンを取得している例です。