円順列全パターン生成マクロの導入手順と使い方
Excelはビジネスの現場での数値計算やデータ分析に広く利用されていますが、VBAマクロを活用することでさらに高度な操作が可能となります。今回は、円順列パターンをExcelで手軽に生成できるVBAマクロの導入手順と使い方をご紹介します。
円順列パターンの使い道
円順列は、特定の点を固定してその周りの順番を変える組み合わせのことを指します。例えば商品の陳列順や、プレゼンテーションのスライドの順序など、順序を変えて最適な組み合わせを見つける際に活用できます。このマクロを使えば、手動で複数の組み合わせを試す必要がなく、効率的に最適な順番を見つけ出すことができます。
円順列の並べ方の数は(n-1)!
(n-1の階乗)で計算できます。nは要素の数です。なお、階乗はFACT関数で取り扱うことができます。下記のマクロを実行する前に、存在する並べ順の数を確認するのもよいでしょう。あまりにたくさんの並べ順があると、パターン生成に時間がかかることが予想されます。詳しくはページ下部のリンクから、並べ順の数のチェックを調べる手順を確認してください。
円順列パターン生成マクロの導入手順
- まず、VBAエディタを開きます。Excelの[開発]タブから[Visual Basic]をクリックしてください。または{Alt}+{F11}キーでVisual Basic Editorを起動します。
- 新しいモジュールを追加するために、[挿入]タブから[標準モジュール]をクリックします。
- 新しいモジュールウィンドウが表示されたら、下記のコードを貼り付けます。
- 貼り付けが完了したら、VBAエディタを閉じてExcelに戻ります。
マクロのコード
Sub GenerateCircularPermutations() Dim nRange As Range Dim OutputCell As Range Dim Items() As Variant Dim CurrRow As Long ' Prompt the user to select the range of items On Error Resume Next Set nRange = Application.InputBox("アイテムの範囲を選択してください:", Type:=8) On Error GoTo 0 If nRange Is Nothing Then Exit Sub ' Prompt the user to select the starting cell for output On Error Resume Next Set OutputCell = Application.InputBox("出力先の開始セルを指定してください:", Type:=8) On Error GoTo 0 If OutputCell Is Nothing Then Exit Sub ' Get the items Items = nRange.Value ' Set the fixed item Dim FixedItem As Variant FixedItem = Items(1, 1) CurrRow = OutputCell.Row ' Generate the circular permutations Call CreatePermutations(FixedItem, Items, 2, OutputCell, CurrRow) End Sub Sub CreatePermutations(FixedItem As Variant, ByRef Items() As Variant, ByVal StartIdx As Long, ByRef OutputCell As Range, ByRef CurrRow As Long) Dim i As Long, j As Long Dim Temp As Variant Dim CurrCol As Long ' If reached the end, output If StartIdx = UBound(Items) + 1 Then OutputCell.Worksheet.Cells(CurrRow, OutputCell.Column).Value = FixedItem CurrCol = OutputCell.Column + 1 For i = 2 To UBound(Items) OutputCell.Worksheet.Cells(CurrRow, CurrCol).Value = Items(i, 1) CurrCol = CurrCol + 1 Next i CurrRow = CurrRow + 1 Exit Sub End If ' Generate permutations recursively For i = StartIdx To UBound(Items) ' Swap elements Temp = Items(StartIdx, 1) Items(StartIdx, 1) = Items(i, 1) Items(i, 1) = Temp Call CreatePermutations(FixedItem, Items, StartIdx + 1, OutputCell, CurrRow) ' Swap back to original order Temp = Items(StartIdx, 1) Items(StartIdx, 1) = Items(i, 1) Items(i, 1) = Temp Next i End Sub
使い方
簡単な手順で円順列のマクロを実行することができます。
- 事前に要素をセルへ入力しておきます。
- Excelの[開発]タブから[マクロ]をクリックします。もしくは{Alt}+{F11}キーを押してマクロリストを表示させます。
- “GenerateCircularPermutations”を選択して[実行]をクリックします。
- 指示に従って、アイテムの範囲と出力先のセルを選択します。
- 実行すると、指定されたセルに円順列の結果が出力されます。
このVBAマクロを活用することで、円順列の組み合わせを効率的に生成することができます。是非、日々の業務に取り入れてみてください。
まとめ
順列のような複雑な組み合わせを求める際には、このマクロの力を借りることで大幅な時間短縮が期待できます。是非、この機会に導入してみてください。
参考ページ:円順列の概要と組み合わせの数を事前にチェックする
円順列の概要と、組み合わせの数を事前にチェックする手順については下記のページをご確認下さい。
Excelで円順列を処理しよう
円順列の使用シーン円順列は、物事の順序が重要であるが、開始点や終了点が特定できない状況での組み合わせの数を表します。以下は円順列の具体的な使用例・使用シーンです: テーブルの席順: あるイベントや結婚式で、円形のテーブルにゲストを配置する場...
コメント