• ベストアンサー

エクセルで数字を一つずつ使う数列を書き出したい

エクセルで1234567、1234576、3261457のような1~7の数字を一つずつ使う7桁の数列のすべてのパターンを書き出すことはできますか?

質問者が選んだベストアンサー

  • ベストアンサー
  • matsu_jun
  • ベストアンサー率55% (146/265)
回答No.1

okw1111 さん、こんばんわ 以下の手順でマクロを登録し、実行してください。 1) 任意のシートのタブを右クリックし、コードの表示(V) を選択する。   すると、Microsoft Visual Basic ウィンドウが表示されます。 2) ウィンドウ右側の大きな余白に、以下をコピーして貼り付けます。 '--------------------ここからコピー---------------------------- Sub パターン導出()  Dim USEDF(7) As Boolean  Dim TgtRow As Integer  TgtRow = 1  Columns(1).Clear  For a# = 1 To 7   For i# = 1 To 7    USEDF(i) = False   Next i   USEDF(a) = True   For b# = 1 To 7    If USEDF(b) = False Then     USEDF(b) = True     For c# = 1 To 7      If USEDF(c) = False Then       USEDF(c) = True       For d# = 1 To 7        If USEDF(d) = False Then         USEDF(d) = True         For e# = 1 To 7          If USEDF(e) = False Then           USEDF(e) = True           For f# = 1 To 7            If USEDF(f) = False Then             USEDF(f) = True             For g# = 1 To 7              If USEDF(g) = False Then               Cells(TgtRow, 1) = a & b & c & d & e & f & g               TgtRow = TgtRow + 1               USEDF(g) = False              End If             Next g             USEDF(f) = False            End If           Next f           USEDF(e) = False          End If         Next e         USEDF(d) = False        End If       Next d       USEDF(c) = False      End If     Next c     USEDF(b) = False    End If   Next b   USEDF(a) = False  Next a End Sub '--------------------ここまでコピー---------------------------- 3) マウスのカーソルを、上で貼り付けた箇所の任意の位置に合わせ、F5キーを押します。 4) Microsoft Visual Basic を終了すれば、A列に全ての組み合わせが表示されます。 全ての組み合わせ数は 7! = 5040 ですので、結果が5040個存在することを私の方で確かめました。

okw1111
質問者

お礼

丁寧な回答ありがとうございます。 おかげで助かりました。

関連するQ&A