Excelで「このリストから重複を除いた一覧だけほしい」と思ったこと、ありませんか。
取引先名や商品コードをコピペして、目視で重複を消していく。データが増えるたびに同じ作業をやり直す。そんな手作業に時間を取られている方は多いはずです。
データタブの「重複の削除」を使う手もあります。ただしこの機能は、元の表そのものを書き換えてしまうんですよね。あとから「やっぱり元に戻したい」と思っても、消えた行は返ってきません。
そこで登場するのがUNIQUE関数。数式を1つ書くだけで、重複を除いた一覧が別の場所に自動で作られます。
元データには一切手を触れません。しかも元の表を更新すれば、一覧のほうも勝手に付いてきてくれますよ。
この記事では、ExcelのUNIQUE関数の使い方を基本から解説します。複数列でのユニーク判定、「重複の削除」機能やCOUNTIF関数との使い分けも扱います。「0が出る」「#SPILL!」といったエラー対処まで、まとめて押さえていきましょう。
UNIQUE関数とは?Excelで重複を除いた一覧を作る関数
UNIQUE関数の読み方とできること
UNIQUE関数(読み方:ユニーク関数)は、指定した範囲から重複を取り除いた一覧を返す関数です。英語の「unique」は「唯一の・重複のない」という意味。名前のとおりの働きをしてくれます。
たとえば、こんな場面で使えます。
- 顧客名簿から重複なしの顧客一覧を作る
- 商品コードの入力履歴から取扱商品のマスタを起こす
- 入力規則(プルダウン)の選択肢を自動で用意する
こうした作業が、数式1本で終わります。
大事なのは、UNIQUE関数が「動的配列関数」だという点。動的配列関数とは、1つのセルに数式を入れるだけで、結果が必要な広さまで自動で広がるタイプの関数のことです。この自動的に広がる動きを「スピル」と呼びます。
つまり4件の一覧が返るなら、数式を入れたセルから下に4行ぶんが勝手に埋まるわけですね。1行ずつコピーする必要はありません。
スピルの仕組みそのものを知りたい方は、スピルで集計・抽出を自動化する方法もあわせてどうぞ。
UNIQUE関数が使えるExcelのバージョン
対応バージョン: UNIQUE関数はMicrosoft 365とExcel 2021以降で使えます。Excel 2019以前は非対応です。2019以前で入力すると、関数名が認識されず
#NAME?エラーになります。
対応している環境を具体的に挙げると、次のとおりです。
- Microsoft 365(Windows / Mac)
- Excel 2024(Windows / Mac)
- Excel 2021(Windows / Mac)
- Excel for the web(ブラウザ版)
- iPad / iPhone / Android版Excel
ブラウザ版のExcelでも問題なく動きます。会社のPCが2019のままでも、Web版が使える環境ならそちらで試せますよ。
なお、UNIQUE関数を含むブックを非対応のバージョンで開いた場合は、少し話が変わります。Microsoftの説明では、動的配列数式は互換性チェッカーで検知されます。そのうえでCSE配列数式として表示される、とされています。
CSE配列数式とは、Ctrl+Shift+Enterで確定する従来型の配列数式のこと。新規に入力したときの#NAME?とは別の挙動なので、混同しないようにしましょう。
バージョン違いによる#NAME?は、XLOOKUP・FILTERが使えない原因と対処で詳しく解説しています。9関数×5バージョンの対応表つきです。
基本構文と3つの引数
UNIQUE関数の構文はこちらです。
=UNIQUE(配列, [列の比較], [回数指定])
英語表記では =UNIQUE(array, [by_col], [exactly_once]) となります。角かっこ [ ] で囲まれた引数は、省略できるという意味です。
| 引数 | 必須/省略可 | 内容 | 既定値 |
|---|---|---|---|
| 配列(array) | 必須 | 重複を取り除く元のセル範囲や配列 | – |
| 列の比較(by_col) | 省略可 | FALSE=行同士を比較して一意の行を返す/TRUE=列同士を比較して一意の列を返す | FALSE |
| 回数指定(exactly_once) | 省略可 | FALSE=重複を1件にまとめた全ユニーク値/TRUE=1回だけ出現した値のみ | FALSE |
必須の引数は第1引数だけ。縦に並んだふつうのリストなら =UNIQUE(A2:A8) と書くだけで動きます。
第2引数「列の比較」は、縦長のリストなら省略でOK。横方向に並んだデータを扱うときだけTRUEにする、と覚えておきましょう。
第3引数「回数指定」はTRUEにすると意味がガラッと変わります。「重複を1件にまとめる」のではなく、「そもそも1回しか出てこない値だけ」を抜き出す動きになるんです。ここは取り違えやすいポイント。
UNIQUE関数の使い方|基本・複数列・組み合わせまで
ここからは実際のデータで見ていきます。以下の受注データ(A1:D8)を使って解説しますね。
| 担当者 | 部署 | 商品名 | 金額 |
|---|---|---|---|
| 田中 | 営業部 | ノートPC | 128,000 |
| 鈴木 | 総務部 | モニター | 32,000 |
| 田中 | 経理部 | ノートPC | 128,000 |
| 佐藤 | 営業部 | プリンター | 45,000 |
| 鈴木 | 総務部 | モニター | 32,000 |
| 佐藤 | 営業部 | ノートPC | 128,000 |
| 山田 | 開発部 | タブレット | 68,000 |
1行目が見出しで、データは2行目から8行目までの7行です。営業部の「田中」さんと経理部の「田中」さんは別人(同姓同名)という設定にしています。
重複を除いたリストを作る(もっとも基本の形)
まずは担当者の一覧を、重複なしで取り出してみます。
=UNIQUE(A2:A8)
結果は4件です。上から「田中」「鈴木」「佐藤」「山田」の順に並びます。
| 担当者 |
|---|
| 田中 |
| 鈴木 |
| 佐藤 |
| 山田 |
数式を入れたのは1セルだけ。それなのに結果は4行ぶんに広がります。これがスピルの働きですね。
並び順にも注目してください。UNIQUE関数は元データに登場した順(初出順)で値を返します。あいうえお順や数値の昇順に並べ替えてはくれません。
並び順を変えたいときは、後述のSORT関数と組み合わせます。
商品名でも書き方は同じ。
=UNIQUE(C2:C8)
こちらは「ノートPC」「モニター」「プリンター」「タブレット」の4件が返ります。
複数列でユニーク判定する|同姓同名を1件にまとめないために
さきほどの =UNIQUE(A2:A8) の結果、実は少し危ういんです。「田中」は1件にまとまっていますが、営業部の田中さんと経理部の田中さんは別人でした。氏名だけで比べると、別人が同一人物として消えてしまいます。
こういうときは、範囲を複数列にします。
=UNIQUE(A2:B8)
結果は5行2列。担当者と部署のペアで判定されます。
| 担当者 | 部署 |
|---|---|
| 田中 | 営業部 |
| 鈴木 | 総務部 |
| 田中 | 経理部 |
| 佐藤 | 営業部 |
| 山田 | 開発部 |
UNIQUE関数は既定で「行同士」を比べます。A2:B8 を渡すと、氏名と部署の組み合わせがそっくり同じ行だけが重複とみなされるわけです。営業部の田中さんと経理部の田中さんは、別の行としてきちんと残ります。
実務では、社員番号や取引先コードを一緒に渡すのが安全策。氏名や商品名のような「人が手入力する文字列」だけで判定すると、思わぬ取りこぼしが起きますよ。
1回だけ出現する値を抽出する(第3引数)
第3引数「回数指定」をTRUEにしてみましょう。
=UNIQUE(A2:A8,FALSE,TRUE)
返ってくるのは「山田」だけです。田中・鈴木・佐藤はいずれも2回登場しているため、対象から外れます。
第2引数を省略して、カンマだけを置く書き方もできます。
=UNIQUE(A2:A8,,TRUE)
商品名で試すとどうなるでしょうか。=UNIQUE(C2:C8,,TRUE) の結果は「プリンター」「タブレット」の2件。ノートPC(3回)とモニター(2回)は除かれます。
第3引数の違いは、次のように整理しておくと迷いません。
- FALSE(既定): 2回以上出た値も1件にまとめ、すべてのユニーク値を返す
- TRUE: ちょうど1回だけ出た値のみを返す
「一度しか取引のない顧客を洗い出す」「1回しか出てこない伝票番号を探す」といった場面で活躍します。
横並びのリストは第2引数をTRUEにする
データが横方向に並んでいるケースも見ておきましょう。別のシートのA1:F1に「田中/鈴木/田中/佐藤/鈴木/山田」と入力されているとします。
=UNIQUE(A1:F1,TRUE)
第2引数にTRUEを指定すると、UNIQUE関数は列同士を比較します。結果は「田中」「鈴木」「佐藤」「山田」の1行4列。今度は横方向にスピルします。
では、ここで第2引数を省略するとどうなるか。行同士の比較になりますが、対象は1行しかありません。重複は何も除かれず、A1:F1がそのまま6列返ってくるだけです。
横並びのデータで「重複が消えない」と感じたら、まず第2引数を疑ってみてください。
SORT関数で並べ替える
UNIQUE関数の結果は初出順でした。見やすく並べ替えたいときはSORT関数で包みます。
=SORT(UNIQUE(C2:C8))
商品名の一覧が昇順で返り、「タブレット」「ノートPC」「プリンター」「モニター」の順に並びます。降順にしたいなら、並べ替えの基準列と順序を指定してください。
=SORT(UNIQUE(C2:C8),1,-1)
ひとつ注意があります。漢字を含む文字列は、ふりがな通りの五十音順にはならないことがあります(文字コード順に近い並びになるとされていますが、Microsoft公式のSORT関数ページに明記された仕様ではありません)。確実に五十音順で並べたいときは、SORTBY関数とPHONETIC関数の組み合わせを検討しましょう。
FILTER関数で絞り込んでから重複を除く
条件で絞ったうえで重複を除きたい。そんなときはFILTER関数を内側に入れます。
=UNIQUE(FILTER(C2:C8,B2:B8="営業部"))
ちょっと複雑に見えますが、やっていることはシンプルです。まずFILTER関数が営業部の行だけを抜き出します。次にUNIQUE関数が、その中の重複を取り除きます。
営業部の行は3行(ノートPC・プリンター・ノートPC)。ノートPCが1件にまとまり、結果は「ノートPC」「プリンター」の2件になります。
なお、内側と外側を逆にした書き方は動きません。
=FILTER(UNIQUE(C2:C8),B2:B8="営業部")
抽出結果の行数と、条件の行数が食い違うためです。「絞ってから重複除去」の順で覚えておきましょう。
件数を数える・1セルにまとめる
一意な値が何件あるかだけ知りたい。そんなときはCOUNTA関数で囲みます。
=COUNTA(UNIQUE(A2:A8))
結果は4。担当者が実質4人いる、とひと目で分かります。
ここで気をつけたいのがCOUNT関数との違いです。COUNT関数は数値だけを数えるため、担当者名のような文字列の一覧に使うと0が返ってしまいます。文字列を含む一覧を数えるなら、COUNTA関数を選んでください。
一意な値をカンマ区切りで1セルにまとめたいときは、TEXTJOIN関数の出番。
=TEXTJOIN("、",TRUE,UNIQUE(A2:A8))
結果は「田中、鈴木、佐藤、山田」という1つの文字列です。第2引数のTRUEは「空欄を無視する」という指定。メール本文や報告書に貼り付けたいときに重宝します。
出現回数もあわせて表示する(COUNTIF・COUNTIFS)
一意な一覧に「それぞれ何件あるか」を添えると、そのまま簡易集計表になります。
まずF2に =UNIQUE(A2:A8) を入力してください。F2:F5に4件の担当者名が展開されます。続いてG2に、次の数式を入力しましょう。
=COUNTIF($A$2:$A$8,F2#)
F2# の「#」はスピル範囲演算子と呼ばれる記号です。「F2から広がった結果の全体」をまとめて指します。
COUNTIF関数の数式はG2の1か所だけ。それでも田中2・鈴木2・佐藤2・山田1という件数が、縦に並んで出てきます。
複数列の組み合わせで数えるなら、COUNTIFS関数の出番。さきほどのF列・G列とぶつからないよう、今度はJ2に =UNIQUE(A2:B8) を入力します。J2:K6に5行2列で展開されますよ。
L2に次の数式を入力し、L6までコピーしてください。
=COUNTIFS($A$2:$A$8,J2,$B$2:$B$8,K2)
結果は上から1・2・1・2・1。営業部の田中さんは1件、総務部の鈴木さんは2件、という具合に件数が出せます。ピボットテーブルを作るほどでもない集計に便利ですよ。
「重複の削除」機能・COUNTIF関数との違い|どれを使うべき?
Excelで重複を扱う方法は、UNIQUE関数だけではありません。データタブの「重複の削除」機能、そしてCOUNTIF関数による重複チェック。この3つの違いを押さえておくと、場面に応じて迷わず選べます。
3ウェイ比較表(UNIQUE関数/重複の削除/COUNTIF関数)
| 比較軸 | UNIQUE関数 | 「重複の削除」機能 | COUNTIF関数 |
|---|---|---|---|
| やること | 重複を除いた一覧を別の場所に作る | 元の表から重複行を消す | 重複しているかを判定する |
| 元データへの影響 | 変更しない(非破壊) | 上書きして削除する(破壊的) | 変更しない(非破壊) |
| 元データを直したとき | 自動で再計算される | 反映されない(実行し直し) | 自動で再計算される |
| 一覧づくり | 数式1つで完結 | 手作業で都度実行 | 単体では作れない |
| 使えるバージョン | Microsoft 365 / Excel 2021以降 | ほぼすべてのバージョン | ほぼすべてのバージョン |
| 向いている場面 | 集計表・プルダウンの元リスト | 一度きりのデータ整理 | 入力ミスの発見・重複箇所の可視化 |
いちばん大きな違いは「元データを壊すかどうか」です。Microsoftの公式ページも注意を促しています。「重複する値を削除すると、重複する値が完全に削除されます」という説明です。
実行前に別シートや別ブックへコピーしておくことが推奨されているほど。一方のUNIQUE関数は、結果を別のセルに書き出すだけです。気に入らなければ数式を消せば済みます。
この気軽さが、日常的に使ううえでは大きな差になりますよ。
COUNTIF関数で重複をチェックする書き方
COUNTIF関数は一覧を作る関数ではありません。「この行は重複か?」を教えてくれる関数です。E2に次の数式を入れて、下方向にコピーします。
=COUNTIF($A$2:$A2,A2)>1
範囲の始点だけを絶対参照($A$2)にして、終点は相対参照(A2)にするのがポイント。こうすると「自分より上に同じ値があるか」を数えられます。
サンプルデータでは、4行目の田中・6行目の鈴木・7行目の佐藤がTRUEになります。いずれも2回目に登場した行ですね。条件付き書式と組み合わせれば、重複セルに色を付けることもできます。
ただしCOUNTIF関数だけでは、重複を除いた一覧までは作れません。一覧がほしいならUNIQUE、チェックだけならCOUNTIF。この線引きで考えると分かりやすいですよ。
場面別の使い分け基準
- 集計表やダッシュボードの元リストを作る → UNIQUE関数。データが増えても自動で追随します
- 入力規則(プルダウン)の選択肢を自動更新したい → UNIQUE関数
- 配布用のファイルから重複行を物理的に消したい → 「重複の削除」機能
- Excel 2019以前で作業している → 「重複の削除」機能かCOUNTIF関数(UNIQUEは使えません)
- どこが重複しているかを目で確認したい → COUNTIF関数+条件付き書式
- 重複は消さずに件数だけ把握したい → COUNTIF関数 / COUNTIFS関数
迷ったら、まずUNIQUE関数を試してみてください。元データを壊さないので、失敗しても数式を消せば元通りです。
UNIQUE関数のよくあるエラーと注意点
結果に「0」が表示される
元の範囲に空白セルが混じっていると、その空白が「0」として返ることがあります。名前の一覧を作ったはずなのに、末尾にぽつんと0が並ぶ。ありがちなトラブルですよね。
理由はシンプルです。Excelでは空のセルを参照すると0として扱われるため、その0がユニークな値の1つとして返ってきます。
ちなみに空白セルが何個あっても、出てくる0は1件だけ。重複としてまとめられるからです。
対処法は3つあります。1つ目はFILTER関数で空白を除いてから渡す方法。
=UNIQUE(FILTER(A2:A20,A2:A20<>""))
2つ目はIF関数で空白を空文字に置き換える方法です。
=UNIQUE(IF(A2:A20="","",A2:A20))
この書き方だと、0の代わりに空欄が1件残ります。見た目さえ整えばよい場面なら、これで十分でしょう。
3つ目は、複数列をまとめて1列にしたいときの技。TOCOL関数の第2引数に1を指定すると、空白を無視して1列に並べ直せます。
=UNIQUE(TOCOL(A2:C20,1))
複数の列に散らばった値から、まとめてマスタを作りたいときに便利な組み合わせです。
#CALC!エラー
#CALC! は「計算結果が空っぽ」のときに出るエラーです。UNIQUE関数単体で出ることは少なく、内側に入れたFILTER関数が原因になるケースがほとんど。
=UNIQUE(FILTER(C2:C8,B2:B8="法務部"))
サンプルデータに法務部の行はありません。FILTER関数の結果が0件になり、そのまま#CALC!が返ります。
対処は、FILTER関数の第3引数(空の場合)を指定するだけ。
=UNIQUE(FILTER(C2:C8,B2:B8="法務部","該当データなし"))
これで「該当データなし」という文字列が表示され、エラーは消えます。空白除去の数式を書いたあとに#CALC!が出たら、この第3引数を思い出してくださいね。
#SPILL!エラー
#SPILL! は「結果を広げたいのに広げられない」ときのエラーです。UNIQUE関数に固有の問題ではなく、スピルする関数に共通のもの。主な原因は次の4つです。
- 展開先のセルに何か入っている: 結果が4行必要なのに、2つ下のセルに文字や数式がある
- 展開先に結合セルがある: 結合されたセルにはスピルできません
- Excelテーブルの中に直接入力した: テーブル内のセルはスピルに対応していません
- 列全体(A:Aなど)を参照した: 展開先がシートの末尾を超えてしまいます
対処法は原因ごとにはっきりしています。
- 展開先のセルを空ける
- 結合を解除する
- 数式はテーブルの外に置く
- 範囲は
A2:A1000のように具体的な行数で指定する
エラーが出たセルには警告マークが表示され、クリックすると原因の説明を確認できます。まずはそこを見るのが近道ですよ。他のエラー表示については、Excelのエラー値一覧|種類・原因・対処法にまとめています。
#NAME?エラー
#NAME? は、関数名そのものが認識されていないサインです。原因は2つに絞られます。
1つ目はバージョン。Excel 2019以前にはUNIQUE関数が存在しないため、入力しても関数として扱われません。
2つ目は単純なスペルミスです。「UNIQE」「UNIQUR」のような打ち間違い、意外とやりがちですよね。
バージョンが原因なら、Microsoft 365やExcel 2021以降への移行が根本的な解決になります。すぐに移行できない場合は、「重複の削除」機能かCOUNTIF関数で代用しましょう。
判定の手順はXLOOKUP・FILTERが使えないときの対処法で詳しく説明しています。
全角・半角や表記ゆれは「別の値」として残る
ここは誤解が多いところ。UNIQUE関数の重複判定には、次のようなクセがあると考えられます。ただしMicrosoft公式のUNIQUE関数ページにはこの挙動の個別記載がなく、COUNTIFなど他の多くのExcel関数に共通する一般的な文字列比較ルールをもとにした整理です。運用前に手元の環境で確認しておくと安心です。
- 大文字・小文字は区別しない: 「apple」と「APPLE」は同じ値とみなされ、1件にまとまります
- 全角・半角は区別する: 「ABC-01」と「ABC-01」は別の値として2件とも残ります
- 前後の空白も区別する: 「東京都」と「東京都 」(末尾に空白)は別の値です
複数人が入力したデータでは、この違いが必ずと言っていいほど起こります。「見た目は同じなのに重複が消えない」ときは、まず表記ゆれを疑ってみてください。
対策は、UNIQUE関数に渡す前に表記をそろえることです。ASC関数で全角文字を半角に変換し、TRIM関数で余分な空白を落とします。
=UNIQUE(TRIM(ASC(A2:A20)))
逆に大文字・小文字までしっかり区別したい場合は、EXACT関数による比較を検討してください。こうした「見えない違い」でつまずいたときは、Excel集計・検索が合わない原因5つと直し方も参考になります。
データを追加しても一覧が増えない
「新しい行を入力したのに、一覧に出てこない」。これは範囲の指定が原因です。
=UNIQUE(A2:A8) と書いた場合、9行目に追加したデータは範囲の外側。当然ながら結果には反映されません。
解決策は2つあります。1つは =UNIQUE(A2:A1000) のように、あらかじめ余裕を持たせる方法。ただし空白セルが0として出るので、さきほどのFILTER関数との組み合わせをセットで使ってください。
もう1つはExcelテーブルにする方法です。範囲を選んで Ctrl + T でテーブルに変換します。
あとは構造化参照で書くだけ。構造化参照とは、テーブル名と列名で範囲を指定する書き方のことです。
=UNIQUE(テーブル1[担当者])
テーブルに行を追加すると範囲が自動で広がり、UNIQUE関数の結果も一緒に増えます。こちらのほうが圧倒的にラクですね。
ただし数式は、テーブルの外側のセルに置いてください。テーブル内に書くとスピルできず、#SPILL!になってしまいます。
よくある質問(FAQ)
Excel 2019でUNIQUE関数は使えますか?
使えません。対応しているのはMicrosoft 365・Excel 2024・Excel 2021の3つです。
Windows版・Mac版・Excel for the web(ブラウザ版)のいずれでも動きます。iPad / iPhone / Android版Excelでも使えますよ。
Excel 2019以前で入力すると#NAME?エラーになります。代わりの手段は、データタブの「重複の削除」機能かCOUNTIF関数による重複チェック。ただし自動更新はされないため、データを更新するたびに作業をやり直す必要があります。
なぜ結果に「0」が表示されるのですか?
指定した範囲に空白セルが含まれているためです。Excelは空のセルを参照すると0として扱うので、その0がユニークな値の1つとして返ってきます。
=UNIQUE(FILTER(A2:A20,A2:A20<>"")) と書けば解決します。ただし条件に合う行が1件もないと#CALC!になるため、FILTER関数の第3引数もあわせて指定しておくと安心。
全角・半角が混在するデータは重複と判定されますか?
基本的には判定されません。全角と半角は別の文字として扱われるため、「ABC-01」と「ABC-01」は2件とも残ります。一方で大文字・小文字は区別されないため、「apple」と「APPLE」は1件にまとまります(いずれもMicrosoft公式のUNIQUE関数ページに個別の明記はなく、他の多くのExcel関数に共通する一般的な文字列比較ルールに基づく整理です)。
事前にASC関数やTRIM関数で表記をそろえてから渡すのが確実です。
複数列を指定するときの注意点は?
複数列を渡すと「行全体の組み合わせ」で重複が判定されます。1列でも値が違えば、別の行として残ります。判定に関係ない列まで含めると、重複が消えません。
たとえば氏名・部署・登録日時の3列を渡した場合、登録日時が違うだけで別人扱いになります。判定に使いたい列だけを範囲に含めるのがコツ。
なお、指定できるのは連続した列だけです。離れた列どうしを組み合わせたいときは、作業列を使いましょう。=A2&"_"&D2 のような連結値を作り、その列をUNIQUE関数に渡すと確実ですよ。
UNIQUE関数とCOUNTIF関数はどちらを使うべきですか?
目的が違うので、そもそも競合しません。重複を除いた「一覧」がほしいならUNIQUE関数。どの行が重複しているかの「判定」がほしいならCOUNTIF関数です。
一覧に件数を添えたいなら、両方を組み合わせるのが正解。=UNIQUE(A2:A8) で一覧を作ります。隣の列に =COUNTIF($A$2:$A$8,F2#) を置けば、担当者ごとの件数まで並びますよ。
まとめ
ExcelのUNIQUE関数について、基本の使い方からエラー対処まで解説しました。ポイントをおさらいしておきましょう。
=UNIQUE(A2:A8)と書くだけで、重複を除いた一覧がスピルで展開される- 結果は元データの初出順。並べ替えたいならSORT関数と組み合わせる
- 複数列を渡すと行全体の組み合わせで判定され、同姓同名も区別できる
- 第3引数をTRUEにすると「1回だけ出現した値」だけが返る
- 元データを壊さず自動更新される点が「重複の削除」機能との最大の違い
- 「0」が出たら空白セル、
#SPILL!が出たら展開先、#NAME?が出たらバージョンを疑う - 全角・半角や前後の空白は区別されることが多いので、事前にそろえておくと安心
- 対応はMicrosoft 365 / Excel 2024 / Excel 2021 / Excel for the webなど。2019以前は非対応
GoogleスプレッドシートにもUNIQUE関数があります。構文は UNIQUE(範囲, 列で判定, 完全一致)。引数の数・並び・既定値(いずれもFALSE)はExcel版とほぼ同じです。
Sheets版の使い方はスプレッドシートのUNIQUE関数の使い方|重複を瞬時に除去で解説しています。
まずは手元のリストで =UNIQUE(範囲) を試してみてください。慣れてきたらSORT関数やFILTER関数を重ねていくと、毎月のコピペ作業が一気に減りますよ。
