並び替え機能と乱数を利用して、セルの内容をシャッフルする方法のご紹介です。
成果物
![randomsort1](https://sunagitsune.com/wp-content/uploads/2021/05/randomsort1.png)
この状態から、
![randomsort8](https://sunagitsune.com/wp-content/uploads/2021/05/randomsort8.png)
セルの並び順をシャッフルさせます。
ランダムに並び替え
使うのは乱数を作るRand関数と、
セルを並び替える並べ替えとフィルタ機能です。
![randomsort2](https://sunagitsune.com/wp-content/uploads/2021/05/randomsort2.png)
並べ替えたい列のひとつ右の列に=Rand()と入力してEnterを押し、
![randomsort3](https://sunagitsune.com/wp-content/uploads/2021/05/randomsort3.png)
オートフィルで関数を下にコピーすると、このようにそれぞれランダムな0~1の値が返ります。
![randomsort4](https://sunagitsune.com/wp-content/uploads/2021/05/randomsort4.png)
このランダムな値を並べ替えしたいので、選択範囲はそのままでホームタブ→並べ替えとフィルター→昇順をクリックします。
![randomsort5](https://sunagitsune.com/wp-content/uploads/2021/05/randomsort5.png)
今選択されているのはB列ですが、隣接するA列も一緒に並べ替えしたいので、「選択範囲を拡張する」にチェックを付けたまま並べ替えを押します。
![randomsort6](https://sunagitsune.com/wp-content/uploads/2021/05/randomsort6.png)
乱数および隣接するA列が並べ替えされました。
Rand関数で作った乱数は何か処理を行うたびに再計算が入り、ちがう数値に変わります。
数値が昇順の並びになっていませんが、並べ替える前とちがう数値になっているためなので気にしないでOKです。
Rand関数で作った乱数は何か処理を行うたびに再計算が入り、ちがう数値に変わります。
数値が昇順の並びになっていませんが、並べ替える前とちがう数値になっているためなので気にしないでOKです。
![randomsort7](https://sunagitsune.com/wp-content/uploads/2021/05/randomsort7.png)
Deleteを押し、Rand関数を削除したら完成です。
VBA(マクロ)でシャッフル
' vba
Sub シャッフル()
'A、B列にシャッフルに関係ないデータがない状態で実行すること
'A列の文字列の数を取得
Dim A列の数 As Integer
A列の数 = WorksheetFunction.CountIf(Range("A:A"), "<>")
'B列の1~「A列の数」行にRand関数を入力
For i = 1 To A列の数
Cells(i, 2).Value = "=rand()"
Next
'B列を優先してソート
Range("A:B").Sort Range("B1")
'B列を削除
Range("B1:B" & A列の数).Delete
End Sub
![vba シャッフル](https://sunagitsune.com/wp-content/uploads/2021/06/0739f0ba147702738206c55a9006eaba.gif)
上の手順をVBA化するとこんな感じになります。A列の文字の数は自動で取得されます。
余計なデータがあると意図しない動きをする(最悪元に戻せない形でデータを削除する)ので、必ずA列、B列にシャッフル対象以外何もない状態で実行してください。
余計なデータがあると意図しない動きをする(最悪元に戻せない形でデータを削除する)ので、必ずA列、B列にシャッフル対象以外何もない状態で実行してください。
![](https://sunagitsune.com/wp-content/uploads/2021/06/gesellschaftsspiel-5878815_1280-160x90.jpg)
Excel(エクセル):ランダム、乱数
Excelの乱数、ランダム関連操作、関数等まとめです。
乱数の作成
関数で乱数を求める場合、Rand関数(0~1の乱数)またはRandBetween関数(指定範囲の整数)を用います。
もしビンゴで使うような重複...
コメント