データをランダムに並び替えるには? 関数のみとVBAによる2つの方法 | EXCELトピックス

スポンサーリンク
スポンサーリンク

データをランダムに並び替えるには?

Excelでデータをランダムに並び替えたい場合、ランダムな数値を使ってデータを並び替える方法が便利です。この記事では、指定した範囲のセルをランダムに入れ替える手順を解説します。

RAND関数を使ったランダム並び替え方法

RAND関数を使うと、指定した範囲のデータをランダムに並び替えることができます。RAND関数は0以上1未満のランダムな数値を返すため、ランダムな順序でデータを並び替える際に役立ちます。

手順

  1. ランダムに並び替えたいデータが含まれる範囲の隣の列に、RAND関数を使ってランダムな数値を生成します。
  2. 例えば、A列のデータをランダムに並び替えたい場合、B列に =RAND() を入力し、A列の全データに対してB列に数値を生成します。
  3. B列にランダムな数値が表示されたら、A列とB列のデータ全体を選択します。
  4. 「データ」タブから「並べ替え」を選び、B列を基準に昇順または降順で並び替えを行います。
  5. 並び替えが完了したら、B列のランダムな数値を削除しても、A列のデータはランダムな順序のまま残ります。

数式の解説

  • =RAND(): 0以上1未満のランダムな数値を返します。Excelの並び替え機能と組み合わせることで、データをランダムに並び替えます。

以下の表では、A列に並び替えたいデータがあり、B列にランダムな数値が生成されています。

A B
1 データ ランダム数値
2 りんご =RAND()
3 バナナ =RAND()
4 みかん =RAND()
5 ぶどう =RAND()

結果

ランダム数値を基準に並べ替えを行うと、A列のデータがランダムな順序に並び替えられます。

その他の方法

Excelでは、マクロ(VBA)を使用してデータをランダムに並び替えることもできます。VBAを使用すると、数式や列を追加することなく、直接データをランダムな順序に並び替えることが可能です。

VBAコード例

Sub RandomSort()
    Dim rng As Range
    Dim tempRange As Range
    
    ' 選択範囲を設定
    Set rng = Selection
    
    ' 選択範囲の隣の列にランダムな数値を追加
    rng.Offset(0, rng.Columns.Count).Resize(, 1).Formula = "=RAND()"
    
    ' 並び替えのキーとして追加したランダムな数値列を指定
    Set tempRange = rng.Resize(, rng.Columns.Count + 1)
    tempRange.Sort Key1:=tempRange.Columns(tempRange.Columns.Count), Order1:=xlAscending, Header:=xlNo
    
    ' ランダム数値列を削除
    rng.Offset(0, rng.Columns.Count).Resize(, 1).ClearContents
End Sub

VBA手順

  1. [開発]から[VisualBasic]を開き、[挿入]から[標準モジュール]で上記のコードを貼り付けます。
  2. ランダムに並び替えたいデータ範囲を選択し、マクロ「RandomSort」を実行します。
  3. データがランダムな順序に並び替えられます。

まとめ

Excelでは、RAND関数やVBAを使うことでデータをランダムに並び替えることができます。RAND関数を使った方法は手軽に実行できる一方、VBAを使うとよりスムーズに操作が可能です。目的に応じて、使いやすい方法を選択してください。

開発タブが表示されていないとき

開発タブを表示させるには? VBAやマクロの設定のために | EXCELトピックス
開発タブが表示されず、VBAやマクロの設定ができない場合の対処法ExcelでVBAやマクロを使用するためには、「開発」タブが必要ですが、初期設定では表示されていません。「開発」タブを表示する設定方法を以下にご紹介します。開発タブを表示させる方法「開発」タブは、Excelのオプション設定で表示することができます。以下の手...

使用した関数について

RAND関数で乱数を発生させる方法と範囲指定やランダム文字列の表示についてわかりやすく解説
RAND関数についてRANDの概要乱数を発生させるExcel関数=RAND()概要 0以上1未満(0<= RND()の範囲 <1)の乱数を求める 求めた数に4を乗ずれば0以上4未満の乱数を得ることができる 数値1以上数値2未満は、=( RAND() * ( 数値2 - 数値1 ) + 数値1 ) 5~9の間の乱数を求め...