UNIQUEは、重複を除いた一覧を返す関数です。
「支店の一覧が欲しい」「登場した商品名だけ知りたい」というときに、1つの数式で済みます。元の表には手を触れません。
書式
=UNIQUE(範囲)
引数は範囲だけです。
基本の使い方
| A | |
|---|---|
| 1 | 東京 |
| 2 | 大阪 |
| 3 | 東京 |
| 4 | 名古屋 |
| 5 | 大阪 |
=UNIQUE(A1:A5)
結果: 東京 / 大阪 / 名古屋
出てきた順番が保たれます。 五十音順にはなりません。並べ替えたいなら SORT で包みます。
=SORT(UNIQUE(A1:A5))
空行が入る原因と対処
範囲を A2:A1000 のように大きく取ると、空欄も1つの値として結果に含まれます。
対処は FILTER で空を除くことです。
=UNIQUE(FILTER(A2:A1000, A2:A1000<>""))
この形が実用上の基本形になります。列全体(A:A)を使うときは特に必要です。
複数列での重複判定
範囲を複数列にすると、行全体が同じものだけを重複と見なします。
| A | B | |
|---|---|---|
| 1 | 東京 | A |
| 2 | 東京 | B |
| 3 | 東京 | A |
=UNIQUE(A1:B3)
結果: 東京/A、東京/B の2行。1行目と3行目が同一なので1つにまとまります。
「支店 × 商品」の組み合わせ一覧が作りたいときに使えます。
件数を数える
重複を除いた件数は COUNTA と組み合わせます。
=COUNTA(UNIQUE(A2:A100))
空欄を除くなら FILTER を挟んでください。
=COUNTA(UNIQUE(FILTER(A2:A100, A2:A100<>"")))
集計表の見出しを作る
UNIQUEの実務での主な用途がこれです。
E2に =UNIQUE(FILTER(A2:A1000, A2:A1000<>""))
F2に =ARRAYFORMULA(IF(E2:E="", "", SUMIF(A:A, E2:E, C:C)))
支店の一覧が自動で作られ、その横に合計が出ます。 新しい支店のデータが増えても、一覧が自動で伸びます。
ただし、この用途なら QUERY 1行のほうが短く書けます。
=QUERY(A:C, "select A, sum(C) where A <> '' group by A", 1)
集計まで含むならQUERY、一覧だけならUNIQUE、という使い分けになります。
重複している値のほうを知りたい
UNIQUEは重複を「除く」関数なので、逆はできません。重複しているものを見つけるなら COUNTIF を使います。
=IF(COUNTIF(A:A, A2) > 1, "重複", "")
重複している値の一覧が欲しいなら、組み合わせます。
=UNIQUE(FILTER(A2:A100, COUNTIF(A2:A100, A2:A100) > 1))
実際に重複行を削除したい
UNIQUEは表示するだけで、元データは変わりません。元データから重複を消したいなら、次のいずれかです。
- – メニューの「データ → データクリーンアップ → 重複を削除」
- – UNIQUEの結果をコピーして「値のみ貼り付け」で置き換える
元データを直接いじる前に、必ずコピーを取ってください。 UNIQUEで結果を確認してから実行するのが安全です。
エラーの対処
#REF! が出る
結果の展開先にデータが入っています。 UNIQUEは下方向に結果を広げるため、その領域が空いている必要があります。
空欄が結果に含まれる
FILTER で <>"" を指定してください。
同じに見えるのに別扱いされる
- – 前後にスペースが入っている(
"東京 "と"東京") - – 全角と半角が違う
- – 数値と文字列が混ざっている
TRIM で整えると解決することが多いです。
=UNIQUE(ARRAYFORMULA(TRIM(A2:A100)))
大文字小文字が区別されない
UNIQUEは大文字小文字を区別しません。"abc" と "ABC" は同じ値として扱われます。区別したい場合は、EXACT を使った判定に置き換える必要があります。
Excelとの違い
Excelにも UNIQUE があります(Microsoft 365 / Excel 2021以降)。書式はほぼ同じですが、Excelには追加の引数があります。
| Excel | スプレッドシート | |
|---|---|---|
| 列方向の重複除去 | 第2引数で指定可 | 範囲の向きで決まる |
| 1回だけ出現した値のみ | 第3引数で指定可 | 無い |
Excel 2019以前では使えないので、その場合は「重複の削除」機能か、COUNTIF を使った作業列で対応します。
まとめ
- – 書式は
=UNIQUE(範囲)。出てきた順が保たれる - – 実用上の基本形は
=UNIQUE(FILTER(A2:A, A2:A<>"")) - – 複数列を指定すると、行全体が同じものを重複と見なす
- – 件数は
=COUNTA(UNIQUE(...)) - – 集計まで含むなら QUERY のほうが短い
- – 元データは変わらない。削除したいならメニュー機能を使う
コメントを残す