• ベストアンサー

EXCELで並べ替えってできますか?

例えば5つの数字(1.2.3.4.5)の順列(5!個)をすべて表示させるような方法ありますか?

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

  • ベストアンサー
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.3

組み合せを出力するコードを書いてみました。Sheet1で行ってみます。 ツール→マクロ→Visual Basic Editor でVBE画面に移り、表示→プロジェクトエクスプローラでプロジェクトエクスプローラを表示し、Sheet1をダブルクリック。出てきたコードウインドウに、下記コードをコピーして貼りつけます。 シートに戻り、ツール→マクロ→マクロ でKumiawaseJを実行します。 他の組み合わせを出すには、minDTに数字を昇順に、maxDTに数字を降順にセットします。7個の数値まで出してみました。 ここから ↓ Sub KumiawaseJ()   Const minDT = 12345 '最小の組み合せを数値で表現   Const maxDT = 54321 '最大の組み合せを数値で表現   Dim Dt As Long '任意の数値の組み合せ   Dim strDt As String '任意の数値の組み合せを文字にしたもの   Dim L As Integer 'カウンタ   Dim chkFlg As Boolean '判定   Dim rw As Long '行カウンタ   Cells.Clear   For Dt = minDT To maxDT     chkFlg = True '判定値を初期化     strDt = CStr(Dt) '数値を文字に変える     For L = 1 To Len(strDt)       '指定数値以外なら非該当       If InStr(CStr(minDT), Mid(strDt, L, 1)) = 0 Then         chkFlg = False: Exit For       End If       '指定数値が二重に現れたら非該当       If InStr(L + 1, strDt, Mid(strDt, L, 1)) > 0 Then         chkFlg = False: Exit For       End If     Next     If chkFlg = True Then       '満足する組み合せなので書き出す       rw = rw + 1       For L = 1 To Len(strDt)         Cells(rw, L) = Mid(strDt, L, 1)       Next     End If   Next End Sub

lassen
質問者

お礼

すごいです!!ありがとうございます。これがやりたかったんです。 なんか説明不足だったみたいで・・・。 VBAってすごいですね。機会があったらかじってみようと思いました。

その他の回答 (2)

  • prome
  • ベストアンサー率32% (64/196)
回答No.2

たぶん、lassenさんが言われているのは、こういうことかと思います。 簡単のために3つの数字にしますと、 1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 と表示するのではないかと。 わからないのは、こういう風に1つの順序を1行に書くのかどうかということ。 1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 と横一列でいいのかな? もう少し、わかりやすく書いてください。 もしこれだとしたら、Excelの並べ替えのタグを使ってできる代物ではなくて、 マクロか何かになるのでしょうか。 私はマクロはよくわかりません。

  • Methyln
  • ベストアンサー率29% (242/823)
回答No.1

どのような状況での話をいっているのか分かりませんが、 メニューにある[データ]-[並べ替え]ではできないのでしょうか?

関連するQ&A