VBAで配列をシャッフルする(要素をランダムに並べ替える)
VBAでも配列の要素をランダムに並べ替えたいときがあります。
そんなときはランダム関数を使って配列の中をシャッフルする関数を作ってしまいましょう。
スポンサーリンク
ソースコード
ソースはこんな感じです。
1 2 3 4 5 6 7 8 9 10 11 |
' 配列をシャッフルする関数 Private Function Shuffle(list) For i = 0 To UBound(list) Randomize rn = Int(UBound(list) * Rnd) tmp = list(i) list(i) = list(rn) list(rn) = tmp Next RandomizeList = list End Function |
やってることは簡単で、乱数を発生させて、2つの要素を入れ替えていくだけです。
完全にランダムになるかって?まぁRandomizeを呼んでるから大丈夫でしょう(?)
使い方
変数の型は配列ではなく、Variant型にしましょう。
要素は数値だけでなく、文字列でもたぶんなんでもOKです。
1 2 3 4 5 6 |
Sub 配列をシャッフルするテスト() Dim list as Variant list = Array("A", "B", "C", "D", "E", "F") list = Shuffle(list) 'ランダムに並べ替え End Sub |
最後までお読みいただきありがとうございました m(_ _)m
スポンサーリンク