行のシャッフル・重複削除・ソート

b, a, a, c → b, a, c

改行区切りのリストを、重複削除・並べ替え・シャッフル・空行削除でまとめて整理します。

複数人から集めたメールアドレスの一覧に同じ住所が何度も入っていた、アンケートの自由記述をコピーしたら空行だらけになった、抽選の候補者リストを公平な順番に並べ替えたい――改行区切りのリストは、手作業で直そうとすると時間がかかるわりに見落としが起きます。このツールは、貼り付けたリストに対して空行削除・重複削除・ソート・シャッフルを組み合わせて一度に処理し、処理前後の行数も表示します。

使い方

テキストエリアに、1行に1件ずつ並んだリストを貼り付けます。表計算ソフトの一列をコピーして貼り付ければ、そのまま改行区切りのリストになります。

次に、行いたい処理のチェックボックスを選びます。初期状態では「空行を削除する」と「重複行を削除する」が入っています。並べ替えたいときは「昇順にソートする」を、順番をランダムにしたいときは「ランダムにシャッフルする」を追加でチェックしてください。選んだら「整理する」ボタンを押します。

同じリストに対して条件を変えながら何度でも試せます。入力欄の内容はボタンを押しても消えないので、まず重複削除だけで件数を確かめ、そのあとソートを足して並べ直す、といった使い方ができます。チェックを外してもう一度押せば、その処理を抜いた結果に戻ります。

結果欄の1行目には「12行 → 7行」のように、処理前と処理後の行数が出ます。何件減ったかがすぐ分かるので、重複がどれくらいあったかの目安になります。その下に区切り線を挟んで、整理後のリストが並びます。「結果をコピー」ボタンでまとめてコピーして、元の資料に貼り戻してください。

仕組み

処理はチェックの付け方にかかわらず、決まった順番で行われます。まず各行の先頭と末尾の空白を取り除き、次に空行を削除し、続いて重複を削除し、それからソート、最後にシャッフルという流れです。

先に空白を取り除くのは、重複判定の精度を上げるためです。「田中太郎」と「田中太郎 」(末尾に空白)は文字列としては別物ですが、名簿としては同じ人です。先に空白を落としておくことで、こうした見た目では気づけない重複もまとめて消えます。ただし行の途中にある空白はそのまま残すため、姓と名の間のスペースは保たれます。

重複削除は、先に出てきた行を残して後から出てきた同じ行を落とす方式です。元の順番に意味がある場合でも、最初の並びが崩れません。ソートは日本語の並び順を考慮した比較で昇順に並べ、シャッフルは偏りの出にくい方式で順番を入れ替えます。ソートとシャッフルを同時に選んだ場合は、後から実行されるシャッフルの結果が残ります。

行数の表示は、空白を取り除いた直後の行数を「処理前」として数えています。処理はすべてブラウザの中だけで完結し、貼り付けたリストがサーバーへ送られることはありません。顧客名簿や社内の連絡先一覧のような、外に出したくないデータでもそのまま扱えます。

よくある質問

Q. 大文字と小文字は同じ行として扱われますか。 A. 別の行として扱います。「ABC」と「abc」は残ります。まとめたい場合は、先に表計算ソフトなどで表記をそろえてください。

Q. 全角と半角の違いはどう扱われますか。 A. こちらも別の文字として扱うため、「ABC」と「ABC」は重複になりません。

Q. シャッフルの結果は毎回変わりますか。 A. 変わります。同じリストでもボタンを押すたびに順番が変わるので、抽選や順番決めに使えます。

Q. 空行を削除しない設定にすると、空行も重複として消えますか。 A. 消えます。空行が複数続いている場合、重複削除の対象になって1行だけが残ります。空行をすべて残したいときは、重複削除のチェックも外してください。

Q. 何行まで処理できますか。 A. 明確な上限は設けていません。数万行でも動作しますが、極端に長いリストでは結果の表示に少し時間がかかることがあります。

Q. 元の順番に戻せますか。 A. 結果欄の内容は上書きされますが、入力欄には貼り付けたままのリストが残っています。すべてのチェックを外して「整理する」を押せば、行頭と行末の空白が取れただけの状態が得られます。