複数の列に散らばったデータをまとめて、重複のない一覧を作りたいことってありますよね。
例えば、顧客リストや商品リストなど、部署ごとに管理された列データを1つにまとめたいとき。
手作業でコピーして、重複を探して…なんてしていると時間がかかってしまいます。
そんなときに便利なのが、UNIQUE関数とTOCOL関数の組み合わせ。
Googleスプレッドシートと一部の新しいExcel(Microsoft 365、Excel 2024以降)でも利用可能です。
この記事では、複数列を縦に結合し、重複を取り除いたリストを簡単に作る方法を、実務で使える例とともにわかりやすく解説します。
使う関数はこの2つだけ
TOCOL関数
複数列のデータを1列に変換する関数です。
=TOCOL(範囲)※第2引数をTRUEにすると空白セルを無視できます(省略可)。
UNIQUE関数
重複のない値だけを取り出す関数です。
=UNIQUE(範囲)
実務例:3列のデータを1列にまとめて重複削除
元データ(A列~C列)
| A列 | B列 | C列 |
|---|---|---|
| りんご | バナナ | みかん |
| ぶどう | りんご | キウイ |
| キウイ | メロン | バナナ |
上のように、商品名が複数列にわたって入力されているデータがあったとします。
作成したい結果(重複を除いた1列のリスト)
| 結果 |
|---|
| りんご |
| ぶどう |
| キウイ |
| バナナ |
| みかん |
| メロン |
関数の組み合わせ方
このように入力します。
=UNIQUE(TOCOL(A1:C3, TRUE))
ポイント
A1:C3は結合したい元の範囲。TOCOL(…, TRUE)で空白セルを無視して縦に結合。UNIQUE()で重複を自動的に除去。
これだけで、複数列に散らばったデータが1列にまとまり、重複も削除されます。
応用:行数や列数が増えても対応できるようにする
範囲が固定されていると、新しいデータが追加されたときに対応できません。
例えば、以下のようにすると、行の追加にも自動対応できます。
=UNIQUE(TOCOL(A:C, TRUE))列ごと追加される場合にも備えるなら、A1:Z1000のような広めの範囲を指定する手もありますが、データ量が増えると処理が重くなることもあるので注意しましょう。
よくある注意点
- 空白セルを含めたくない場合は
TOCOL(..., TRUE)の「TRUE」が重要です。 - 重複の判定は文字列単位です。たとえば「バナナ 」のようにスペースが入っていると別物とみなされます。
TRIMやCLEAN関数との併用も検討しましょう。 - Excelでも使えますが、Excel 365 または Excel 2024 以降が必要です。古いバージョンではエラーになります。
まとめ
複数の列に分かれたデータを1列にまとめて重複を削除するには
=UNIQUE(TOCOL(対象範囲, TRUE))
このシンプルな式で、データ整形の手間が一気に減らせます。
特に商品管理や顧客リストなど、実務の中でよく使われる処理です。
「コピー&ペーストで手作業」から卒業して、効率的なスプレッドシート活用を目指しましょう!

