« 数式を値に変換する2 | トップページ | 列の「並び替え」 »

2011年2月19日 (土)

ランダムに並び替える

行の並び替えや
配列のソートについての記事が続いていますが
その過程で
並び替えの効果を見やすくするために
行や配列をランダムで並び替えた方がいいかなと
思うこともありました。

ある名簿で
ランダムで並び替えて順番を決める。

一定量の英文法の問題があり
それを毎回ランダムな順番で出題したい。

いままでは
順番に並べることばかり考えていましたが
ランダムで並び替えたい場面はたくさんありますね。

ランダムといえば
やっぱり乱数を使うしかない!

ということで
乱数を使ってランダムに並び替えたいと思います。

基本的な流れは
あるランダムに並び替えたい範囲があるとします。
その範囲に1列追加して
その列に乱数を入れます。

乱数を入れた列を加えた並び替えたい範囲を
乱数の列を基準に昇順か降順の並び替えをする。

乱数を入れた列を削除する。

これでランダム?に並び替えられます。
あくまで個人的にランダムと思われる程度で
厳密にはわかりません。

具体的に実行してみます。

今、下のシートの画像のように
A列に「あいうえおかきくけこ」と入力してあります。
これをランダムに並び替えます。
Vba20110219a

B列に乱数を入れて
この列を基準に並び替えます。
それからB列を削除します。

コードはこちら

ランダムに並び替えるコード:

Sub macro110219a()
'ランダムに並び替える

    Dim i As Integer
   
    Randomize
    '乱数を入れる
    For i = 1 To 10
        Cells(i, 2) = Rnd()
    Next i
   
    '乱数で昇順並び替え
    Range("A1:B10").Sort _
        Key1:=Range("B1"), Order1:=xlAscending, _
        Header:=xlNo, _
        OrderCustom:=1, _
        MatchCase:=False, _
        Orientation:=xlTopToBottom, _
        SortMethod:=xlPinYin
       
    '乱数を削除
    Range("B1:B10").Clear
   
End Sub

実行課程の様子です。

B列に乱数を入れる
Vba20110219b

B列を昇順に並び替え
Vba20110219c

B列を削除
Vba20110219d

配列の場合はどうやろうかな?

|

« 数式を値に変換する2 | トップページ | 列の「並び替え」 »

Excel VBA」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/550472/50910898

この記事へのトラックバック一覧です: ランダムに並び替える:

« 数式を値に変換する2 | トップページ | 列の「並び替え」 »