RANDとRANK関数で重複しない連番作成[SORTとUNIQUE関数で応用]

今回の記事では

Excelの関数を使って重複しない連番を振る方法って無いの?

なるべく簡単な方法を知りたい

Excelの関数で重複しない名前を一覧から抜き出す方法は無いの?

簡単な方法で手軽に作れたら便利なのに

こういった疑問に答えます

✔関数を使った重複しないデータの作り方のテーマ

①RAND関数とRANK関数を使えば重複しない連番は簡単に作れます

②SORT関数とUNIQUE関数を組み合わせれば重複しない名前が作れます

この記事を書いているのはOfficeを約20年間活用しながら

ITを活用したエステの経営マネジメントしている私の経験を基に

「関数を使った重複しないデータの作り方のテーマ」に関して実体験に基づいて解説しています

今回の内容を一緒にやりたい場合は▼のファイルをダウンロードして下さい

RAND関数とRANK関数を使えば重複しない連番は簡単に作れます

RAND(ランド)関数とRANK(ランク)関数を組み合わせることで重複しない連番を簡単に作る事ができます

なぜなら、RAND関数の結果をRANK関数で順位付けることで重複しない番号を振ることが出来るからです

それでは、具体的な方法について順番に解説していきます

まずは、完成した結果から見てみましょう

こんな風にランダムな値の列を作ってランダムな結果から重複しない値を作成しています

まずは、RAND関数の設定方法から見ていきましょう

RAND関数の設定方法は「=RAND()」と設定します

引数は設定しないでOKです

RAND関数は「0以上1未満の乱数(ランダムな数字)を設定してくれる関数」です

なので「0.xxxx」といった数字を自動で作ってくれるということですね

ただし、RAND関数は何か操作するごとにランダムな数字を表示します

RAND関数が乱数を作り続けなくする対処法は最後に解説するのでこのまま話を進めていきます

RAND関数を「B24のセル」までコピーします

RANK関数を「C5のセル」に設定します

内容は「=RANK(B5,$B$5:$B$24,1)」です

RANK関数の基本的な使い方は「=RANK(数値,参照,[順序])」です

コレを分かりやすくすると「=RANK(対象の数値が,指定範囲内の何番目なのか表示してね,昇順(一番小さい数を1)や降順(一番大きい数を1)で)」という意味になります

つまり、今回の式を日本語にすると「=RANK(B5セルの数値は,B5~B24の範囲の中の◯番目です,昇順で表示)」ということになります

順序は省略してもOKです

今回のポイントは「$B$5:$B$24」の部分です

この部分は「対象範囲を固定」することで今の行の数字は全体の数字の中の何番目だよ

ということを判断出来るという訳です

今回の場合は、たまたま「1」が表示されています

これをコピーしましょう

これだけで、重複しない連番を設定することが出来ました

どうしてこんな事が出来るのか不思議ですよね

理由は、ランダムな数字を見ると分かります

例えば「0.0085」と「0.023」は「1と2」です

これはどちらが小さいかを判断して順番を付けているので分かりやすいですね

でも近い数字もあるはずです

例えば「0.012」と「0.011」などの場合です

この場合は「0.01」までは同じなので順位が重複してしまう可能性がありますが、それを回避するために桁数を下げることでどちらが大きいか?

つまり、「重複させずに順番を割り振ることが出来る=重複しない連番をつくることが出来る」という訳です

では、仕上げにRAND関数がいつまでもランダムな数字を作り続ける設定を無効にします

やり方は本当に簡単です

RAND関数が設定されている「B5~B24の範囲のセル」を選択します

「B5のセル」をクリック

「貼り付け」オプションの「値」をクリック

これで数字だけが上書きされたので何をやっても数字は固定されたままです

こんな風に意外と簡単に重複しないランダムな値が作れるのでチャレンジしてみましょう

また、RANK関数のもRAND関数と同じようにコピペして並べ替えなどをするとより使いやすくなります

ランダムで重複しない値はクイズなどの問題やテスト用に使える案外便利な技です

繰り返しになりますが、RANDOM関数とRANK関数を組み合わせることで重複しない連番を簡単に作る事ができます

SORT関数とUNIQUE関数を組み合わせれば重複しない名前が作れます

SORT(ソート)関数とUNIQUE(ユニーク)関数を組み合わせると重複しない名前が作れます

なぜなら、重複しない値はユニーク関数で絞り込むことができ、SORT関数で並べ替えることが簡単に出来るからです

名前の一覧から重複しない一覧を並べ替えて表示出来たらすごく便利ですよね

例えば、何かのデータベースの中から名前の部分だけコピペして、全員の名前を重複したい時など

手作業でやるとなるとゾッとするレベルです

そんな面倒な作業を簡単にしてくれる方法を解説していきます

まずは結論から見ていきましょう

A列は「重複した名前の一覧表」でB列が「重複していない名前の一覧表」です

C列で「重複しない昇順に並べ替えられた一覧表」を作っています

※名前の並べ替えについてはフリガナではなく文字コード順になってしまうのでその点については注意して下さい

まずは、UNIQUE関数を使って重複しない名前の一覧表を作ってみましょう

「B5のセル」に「=UNIQUE(A5:A18)」と入力します

以上です

コレだけで自動的にユニークな名前の一覧表を作ってくれます

UNIQUE関数はスピル機能を前提とした新しい関数なので1つのセルで設定した内容が他のセルに勝手に反映されます

スピル機能やSORT関数についての詳しい解説は「Excelのスピルなら関数をより便利に」という記事で解説しているので参考にして下さい

UNIQUE関数は指定した範囲内からユニークな値

つまり、重複しない値だけをピックアップして表示してくれる関数です

そのため重複しない名前の一覧表を関数で表示したいなら、UNIQUE関数を使うのがベストということです

では、最後に重複しない並べ替えられた一覧表を作る方法について解説します

設定方法はUNIQUE関数とほぼ一緒です

「C5のセル」に「=SORT(UNIQUE(A5:A18),1,1)」と入力して終了です

これはSORT関数の簡単な応用で並べ替えの対象範囲を「UNIQUE関数の結果」にしているだけです

つまり「B列の一覧表を昇順で並べ替えてね」という設定と同じです

ポイントは、並べ替え範囲としてUNIQUE関数をネストすることで並べ替えと重複回避をしているということです

この方法は2つの関数の基本的な使い方が分かっていれば簡単なので試してみる価値アリです

但し、昇順で並べ替えをするように設定してるのに上手くいっていない部分があります

これは、文字の読み仮名(フリガナ)に問題があります

この結果を見てもらうと分かりやすいですが、UNIQUE関数もSORT関数もフリガナ(もしくはルビ)の情報を消してしまうというデメリットがあります

そのため日本語だとちゃんとした並べ替えが出来ない事があるので、これでは問題がある場合はExcelの重複の削除機能や並べ替え機能を使った方が安全だということは覚えておきましょう

繰り返しになりますが、SORT(ソート)関数とUNIQUE(ユニーク)関数を組み合わせると重複しない名前が作れます

コメントを残す

メールアドレスが公開されることはありません。