- ベストアンサー
EXCELで並べ替えってできますか?
例えば5つの数字(1.2.3.4.5)の順列(5!個)をすべて表示させるような方法ありますか?
- みんなの回答 (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
その他の回答 (2)
- prome
- ベストアンサー率32% (64/196)
たぶん、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)
どのような状況での話をいっているのか分かりませんが、 メニューにある[データ]-[並べ替え]ではできないのでしょうか?
お礼
すごいです!!ありがとうございます。これがやりたかったんです。 なんか説明不足だったみたいで・・・。 VBAってすごいですね。機会があったらかじってみようと思いました。