配列・抽出
UNIQUE関数の使い方・読み方
読み方:UNIQUE は「ユニーク」と読みます。(一般的な読み方です。公式に読み仮名の定めはありません)
UNIQUEは、重複を除いた一覧を返す関数です。
このページの中身(25項目)
この記事の書式と対応環境の出どころ(2026-08-26 確認)
- Google スプレッドシート ヘルプ:公式の書式は
UNIQUE(範囲, 行で処理, 重複なし)
https://support.google.com/docs/answer/10522653 - Microsoft サポート:UNIQUE 関数
https://support.microsoft.com/ja-jp/excel/functions/unique-function
関数の仕様は追加・変更されることがあります。書式が合わないときは、上の公式ページで最新をご確認ください。
「支店の一覧が欲しい」「登場した商品名だけ知りたい」というときに、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 を使った作業列で対応します。
重複を除くという処理の位置づけ
一覧から重複を取り除く作業は、集計の前段としてほぼ必ず必要になります。担当者の一覧を作る、取引先の種類を数える、商品分類の選択肢を用意する。いずれも重複を除いた一覧が出発点です。
従来は、専用の機能で重複を削除するか、条件付き書式で色を付けて手作業で消すか、作業列で判定してから絞り込むという手順を踏んでいました。いずれも一度きりの処理で、元データが更新されればやり直しになります。
重複を除く関数を使うと、この処理が数式になります。元データが増えれば結果も自動的に更新されます。担当者が増えたら一覧にも追加され、いなくなれば消えます。手作業の工程がまるごと不要になります。
この違いは、運用の性質を変えます。月次で手順書どおりに作業していたものが、シートを開くだけで最新になります。作業漏れという事故が構造的に起きなくなります。
完全に一致する行だけが除かれる
複数列を対象にした場合、重複と判定されるのは、指定した範囲のすべての列が一致する行だけです。一部の列だけが同じでも、別の行として残ります。
これは意図と食い違うことがあります。たとえば、担当者と商品分類の二列を指定した場合、同じ担当者でも商品分類が違えば別の行として残ります。担当者の一覧が欲しかったのであれば、担当者の列だけを対象にする必要があります。
範囲の指定を間違えると、想定より多くの行が返ります。結果が思ったより多いときは、まず対象の列数を確認してください。
逆に、複数列の組み合わせで重複を判定したい場合は、この動きが正解です。担当者と月の組み合わせが重複していないかを調べる、といった用途に使えます。
なお、大文字と小文字は区別されません。同じ綴りで大文字小文字だけが違う値は、同じものとして扱われます。区別が必要な場合は、別の方法を考える必要があります。
一度だけ現れるものを取り出す
重複を除く関数には、動作を変える引数があります。既定では、重複しているものを一つにまとめて、すべての種類を返します。もう一つのモードでは、一度しか現れない値だけを返します。
この二つは意味がまったく違います。前者は「どんな種類があるか」を知るための処理です。後者は「他とかぶっていないものはどれか」を知るための処理です。
後者が役に立つのは、突き合わせの作業です。二つの一覧を縦につないで、一度しか現れないものを取り出せば、片方にしかない項目が分かります。名簿の差分を取る、在庫と台帳を照合する、といった用途で使えます。
引数の指定を間違えると、意図とまったく違う結果が返ります。件数が極端に少ない場合は、この引数を疑ってください。
並べ替えや抽出と組み合わせる
重複を除いた結果は、そのまま他の関数に渡せます。この組み合わせで、集計の前処理がひととおり数式で書けるようになります。
結果を五十音順や昇順に並べたいなら、並べ替えの関数で包みます。プルダウンの選択肢として使う一覧なら、並んでいたほうが選びやすくなります。
条件に合う行だけから重複を除きたいなら、抽出の関数で絞ってから渡します。特定の期間の担当者一覧、といった処理ができます。
さらに、重複を除いた一覧の横に、条件付きの集計を並べると、集計表が完成します。担当者ごとの件数や合計を、担当者が増えても自動で追従する形で作れます。
この構成は、ピボットテーブルの代わりとして使えます。更新の操作が不要で、他のセルから参照しやすいという利点があります。→ FILTER関数の使い方 / SORT関数の使い方
選択肢を実データから自動生成する
重複を除く関数の実務的な使い道として、プルダウンの選択肢を自動生成する方法があります。
実データの担当者列から重複を除けば、実際に存在する担当者の一覧になります。この一覧をプルダウンの参照先に指定すれば、担当者が増えたときに自動で選択肢に加わります。手で候補を管理する必要がなくなります。
並べ替えの関数と組み合わせれば、一覧が整った順序で表示されます。選ぶ側にとっても探しやすくなります。
注意点として、実データに表記ゆれがあると、それがそのまま選択肢に現れます。「東京」と「東京都」が両方存在すれば、両方が候補になります。したがって、この方法は表記が統一されていることが前提です。
逆の順序で考えると、プルダウンで入力させることで表記が統一され、その結果を選択肢として使える、という循環になります。最初の一覧だけを手で整えれば、以降は自動で回ります。
新しい値を追加したい場合は、実データに一件入力すれば選択肢に加わります。専用の一覧を別途管理する必要がありません。
「配列・抽出」の関数を全体から見る
配列・抽出に含まれる関数を、全体から見ておきます。同じカテゴリの関数は、つまずく場所も似ています。この記事のほかに9本あります。
このカテゴリで共通するつまずき
展開先が空いていないと #REF! で止まります。専用のシートに分けてください。1つで理解した内容は、同じカテゴリの他の関数にもそのまま使えます。
どれを使うかの決め方
元の表を変えずに別の見え方を作れるのが利点です。関数の一覧を眺めて選ぼうとすると、どれも当てはまるように見えて決まりません。
迷ったときは
→ 全関数の一覧 に目的別の索引があります。
数式を書く前の手順
手順を分けると、どこで詰まっているかが分かります。
1. 出したい結果を一文で書く
「何を、どの条件で、どんな形で出したいか」。この一文が書ければ、関数はほぼ決まります。書けないなら、まだ要件が固まっていません。
2. 元データの型を確認する
展開先が空いていないと #REF! で止まります。専用のシートに分けてください。=ISNUMBER(A2) で数値かどうかを確認できます。見た目が同じでも、数値と文字列は別物です。
3. 空欄と0の扱いを決める
未入力なのか、実績が0なのか。表の意味が変わります。どちらとして扱うかを決めてから書いてください。
4. 条件の数を数える
元の表を変えずに別の見え方を作れるのが利点です。将来条件が増える可能性があるなら、最初から複数条件に対応する形にしてください。
5. 共有先の環境を確認する
新しい関数は、古い環境で開くとエラーになります。社外に渡すファイルでは、この一点で選択肢が変わります。
6. 1行だけ書いて確認する
全行にコピーする前に、1行分の結果が正しいかを見てください。間違ったまま広げると、直す手間が増えます。
どの関数でも共通する確認
以下は、どの関数を使っていても同じです。
参照を固定したか
下方向にコピーする数式では、動いてはいけない参照を固定します。上の数行だけ見て判断しないでください。ずれは下のほうで表面化します。
範囲の行数が揃っているか
複数の範囲を渡す関数では、行数がずれると結果が狂います。エラーにならず値が返るため、気づきにくい種類の間違いです。
型が揃っているか
=ISNUMBER(A2)
数値として入っているかを判定します。システムから書き出したデータでは、これが原因のことが多くあります。
前後に空白が入っていないか
=LEN(A2)&" / "&LEN(TRIM(A2))
数が違えば、余分な空白が入っています。見た目では判別できません。
別の方法で検算したか
同じ数字を別の関数でも出して、突き合わせてください。1つの結果だけを見ても、正しいかどうかは判断できません。
最終行まで確認したか
一番下までスクロールして、結果を見てください。途中から値が変わっていないかを確認します。
引き継ぐときに残すこと
数式は動いていても、意図は残りません。渡す前に、次の点をシート内にメモしてください。3分で終わります。
何を出している数式か
一行で構いません。読めば分かると思っても、数か月後の自分には分かりません。
どの表を参照しているか
参照先のシート名と、更新の担当。別ファイルなら、その場所も書いてください。
該当しないときの扱い
空欄にしているのか、文言を出しているのか、エラーのまま残しているのか。書いていないと、受け取った側は空欄をデータなしと読みます。
触ってはいけない場所
列を挿入すると壊れる数式がある場合、必ず書き残してください。この一行があるだけで、引き継ぎ後の事故が大きく減ります。
使った関数の対応環境
新しい関数を使っている場合、古い環境では開けません。共有の範囲が広がる可能性があるなら、明記してください。
確定した期間は値にする
締めた月の集計は、値貼り付けにしてください。参照元を消しても壊れなくなり、ファイルも軽くなります。
このサイトの収録状況
全201本を、次のカテゴリに分けて収録しています。
| カテゴリ | 記事数 |
|---|---|
| 目的別 | 51本 |
| 集計 | 47本 |
| 文字列 | 31本 |
| 日付 | 19本 |
| 検索・参照 | 15本 |
| 条件 | 15本 |
| 機能 | 12本 |
| 配列・抽出 | 10本 ←この記事 |
| 関数一覧 | 1本 |
探し方の順番
関数名が分かっているなら検索窓から。やりたいことだけ決まっているなら「目的別」から。近い関数を比べたいなら、同じカテゴリの一覧から入ってください。
記事の構成
どの記事も、書式・実例・つまずきやすいところ・似た関数との使い分けを同じ順番で並べています。1本読めば、他の記事も同じ場所を探せます。
よくある質問
Q. 結果が展開されずエラーになります
あふれる先に何か入っています。下方向と右方向を空にしてください。目に見えない空白文字が残っていることもあります。
Q. 空白も一つの値として返ります
対象範囲に空白セルが含まれています。抽出の関数で空白を除いてから渡すか、範囲をデータのある部分に絞ってください。
Q. 件数を数えたいのですが
重複を除いた結果を、件数を数える関数で包んでください。種類の数が分かります。
Q. 大文字と小文字を区別したいのですが
この関数では区別されません。区別が必要な場合は、別の方法を検討してください。
Q. 横方向でも使えますか
対象の方向を指定する引数があります。横並びのデータにも対応できます。
Q. 元データを消したら結果も消えました
結果は元データと連動しています。固定したい場合は値として貼り付けてください。
Q. 古い環境でも使えますか
比較的新しい関数のため、古い環境では使えません。共有相手の環境を確認してください。使えない場合は、専用の機能や作業列での判定になります。
Q. 重複している行だけを知りたいのですが
件数を数える関数で、各行が何回現れるかを数え、二以上のものを抽出してください。→ 重複を削除・抽出する方法
まとめ
- 書式は
=UNIQUE(範囲)。出てきた順が保たれる - 実用上の基本形は
=UNIQUE(FILTER(A2:A, A2:A<>"")) - 複数列を指定すると、行全体が同じものを重複と見なす
- 件数は
=COUNTA(UNIQUE(...)) - 集計まで含むなら QUERY のほうが短い
- 元データは変わらない。削除したいならメニュー機能を使う
関連する関数
UNIQUE でエラーが出たときの読み方
Excelで #SPILL! が出る
UNIQUE の結果は複数のセルに広がります。
広がる先に何か入っていると #SPILL! になります。
結果を書き出す下方向・右方向を空けてください。
見えない空白が入っているだけでも止まります。
Excelで #NAME? が出る
UNIQUE は Excel 365 / 2021 以降の関数です。
それより前の環境で開くと #NAME? になります。
社外に渡すファイルでは、この1点で使う関数が変わります。
古い環境向けには「データ → 重複の削除」で対応してください。
重複しているはずなのに、別々に出てくる
UNIQUE は文字として比較します。
末尾の空白、全角と半角、大文字と小文字(※UNIQUEは区別しません)などで
別物として扱われることがあります。
=UNIQUE(TRIM(範囲)) のように整えてから渡してください。
整え方は #VALUE!エラーの直し方 の 「見えない文字の一覧」にまとめています。
並べ替えと件数を一緒に出す
一覧を作るだけでなく、件数まで欲しい場面が多いはずです。
=SORT(UNIQUE(A2:A100),1,TRUE) で並べ替えた一覧になります。
その隣に =COUNTIF($A$2:$A$100,D2) を置けば件数が出ます。
Googleスプレッドシートなら QUERY 1本でも書けます。
=QUERY(A2:A100,"select Col1, count(Col1) group by Col1 order by count(Col1) desc",0)
件数の多い順に並んだ一覧が、1つの数式で出ます。