営業部の田中さんは、毎週開催される会議の資料準備に頭を悩ませていました。顧客リストから同じ会社名が何度も出てくるため、毎回手作業で重複を削除していたのです。時間がかかるだけでなく、ミスも発生しやすく、会議直前になって数字が合わないということも…。もっと効率的な方法はないものだろうか、と頭を抱えていました。
UNIQUE関数で顧客リストから重複を除外する方法
UNIQUE関数とは?
ExcelのUNIQUE関数は、指定した範囲から重複する値を削除し、一意な値だけを抽出する関数です。例えば、顧客リスト、社員名簿、商品リストなど、重複するデータが含まれている場合に、重複を除いたリストを簡単に作成できます。手作業でフィルタリングするよりも圧倒的に早く、正確に処理できるのが魅力です。Microsoft 365およびExcel 2019以降のバージョンで利用可能です。
経理部の月次締め処理で、部署ごとの経費集計を行う際、同じ社員が複数の経費項目に登場することがあります。この場合、社員番号をUNIQUE関数で抽出することで、正確な人数を把握し、人件費の分析に役立てることができます。
UNIQUE関数の基本的な使い方
UNIQUE関数は非常にシンプルで、初心者でもすぐに使いこなせるようになります。基本的な構文は以下の通りです。
=UNIQUE(範囲, [列方向], [出現回数])
- 範囲: 重複を除外したいデータが含まれるセル範囲を指定します。
- [列方向]: 省略可能。TRUEを指定すると列方向で比較、FALSE(または省略)で通常通り行方向で比較します。
- [出現回数]: 省略可能。TRUEを指定すると1回しか出現しない値を返し、FALSE(または省略)で一意な値をすべて返します。
一番シンプルな使い方は、範囲を指定するだけです。例えば、A1:A10に顧客名が入力されている場合、以下の数式で重複を除いた顧客リストを作成できます。
=UNIQUE(A1:A10)
- Excelシートを開き、重複データが含まれるリストを用意します。(例:A1:A10に顧客名)
- 重複を除外したリストを表示したいセル(例:C1)を選択します。
- 数式バーに「=UNIQUE(A1:A10)」と入力し、Enterキーを押します。
- C1セルから、重複が除外された顧客リストが表示されます。

ポイント: UNIQUE関数は、元のデータ範囲が変更されると自動的に結果を更新します。動的なリストを作成するのに非常に便利です。
実務で役立つUNIQUE関数の活用例:営業、経理、人事
UNIQUE関数は、様々な部署で活用できます。ここでは、具体的な業務シナリオを3つ紹介します。
【営業部】顧客リストの重複チェックと営業担当者別集計
ある製造業の営業部では、複数の営業担当者が顧客情報をExcelで管理していました。そのため、顧客リストに同じ会社名が複数登録されていることが頻繁に発生していました。この問題を解決するために、UNIQUE関数を使って重複を除外し、正確な顧客数を把握することにしました。
- 顧客リストの会社名が入力されている列(例:B列)を選択します。
- 別のシートまたは列に「=UNIQUE(B:B)」と入力します。
- 重複が除外された会社名リストが作成されます。
さらに、COUNTIF関数と組み合わせることで、営業担当者別の顧客数を集計することも可能です。
=COUNTIF(担当者列, 担当者名)
この数式を使うことで、各営業担当者が担当している顧客数を正確に把握し、営業戦略の立案に役立てることができます。

【経理部】経費精算における重複申請のチェック
経理部では、社員からの経費精算申請を処理する際、同じ日付、同じ内容の申請が重複して提出されるケースがありました。これを防ぐために、UNIQUE関数を使って重複申請をチェックする仕組みを導入しました。
- 経費申請データの「日付」「内容」「金額」が入力されている列を結合します。(例:=A2&B2&C2)
- 結合した列に対して「=UNIQUE(結合列)」を実行します。
- UNIQUE関数で抽出されたリストと元のリストを比較し、重複がないか確認します。
IF関数と組み合わせることで、重複があれば「重複」と表示させることも可能です。
=IF(COUNTIF(結合列, 結合セルの値)>1, "重複", "")
筆者の経験では、この方法を導入することで、経費精算のチェックにかかる時間を大幅に削減できました。

【人事部】社員名簿からの重複除外とユニークな社員数の算出
人事部では、社員名簿を管理する際、退職者の情報が残っていたり、部署異動の際に重複して登録されたりすることがありました。そこで、UNIQUE関数を使って社員名簿から重複を除外し、正確な社員数を把握することにしました。
- 社員名簿の氏名が入力されている列(例:A列)を選択します。
- 別のシートまたは列に「=UNIQUE(A:A)」と入力します。
- 重複が除外された社員名リストが作成されます。
さらに、COUNTA関数と組み合わせることで、ユニークな社員数を算出できます。
=COUNTA(UNIQUEの結果範囲)
この数式を使うことで、人事部は正確な社員数を把握し、人事戦略の立案に役立てることができます。

UNIQUE関数と他の関数を組み合わせて、さらに高度な分析を行う
UNIQUE関数は単独で使用するだけでなく、他の関数と組み合わせることで、さらに高度なデータ分析を行うことができます。ここでは、FILTER関数との組み合わせについて解説します。
FILTER関数との連携:特定の条件に合致する重複除外リストを作成
FILTER関数は、指定した条件に合致するデータだけを抽出する関数です。UNIQUE関数と組み合わせることで、特定の条件を満たすデータの中から重複を除外したリストを作成できます。
例えば、営業部で特定の地域(例:東京都)の顧客リストから重複を除外したい場合、以下の数式を使用します。
=UNIQUE(FILTER(顧客リスト範囲, 地域列="東京都"))
この数式は、顧客リスト範囲から地域が東京都であるデータを抽出し、その中から重複を除外したリストを作成します。実務でよく見かけるのは、地域ごとの顧客分析や、特定の商品の購入者リストから重複を除外する場合などです。

複数の条件でフィルタリングする場合
FILTER関数は、複数の条件を指定することも可能です。例えば、地域が東京都であり、かつ特定の商品の購入者リストから重複を除外したい場合は、以下の数式を使用します。
=UNIQUE(FILTER(顧客リスト範囲, (地域列="東京都")(商品列="A-001")))
ここで注意したいのは、複数の条件を指定する場合、各条件を括弧で囲み、乗算記号()で結合する必要がある点です。AND条件として機能します。
注意点: FILTER関数は、条件に合致するデータがない場合、#CALC!エラーを返します。IFERROR関数を使ってエラー処理を行うことをお勧めします。
UNIQUE関数でよくあるエラーとその解決策
UNIQUE関数は比較的シンプルな関数ですが、使用する際にいくつかのエラーが発生することがあります。ここでは、よくあるエラーとその解決策について解説します。
#NAME?エラー:関数名が間違っている
UNIQUE関数は、Excel 2019以降のバージョンで利用可能です。古いバージョンのExcelを使用している場合、#NAME?エラーが表示されます。この場合、Excelを最新バージョンにアップグレードするか、他の方法(例えば、詳細フィルター)で重複を除外する必要があります。
また、関数名が正しく入力されているか確認してください。スペルミスがあると、#NAME?エラーが表示されます。
#SPILL!エラー:結果がスピルできない
UNIQUE関数の結果を表示する範囲に、他のデータが入力されている場合、#SPILL!エラーが表示されます。これは、UNIQUE関数が結果を自動的に展開できないために発生します。この場合、結果を表示する範囲を空けるか、他の場所に数式を入力する必要があります。
筆者の経験では、このエラーは、結果を表示する範囲に意図せず数式や値が入力されている場合に発生しやすいです。事前に範囲を確認するようにしましょう。
#VALUE!エラー:範囲の指定が正しくない
UNIQUE関数の範囲指定が正しくない場合、#VALUE!エラーが表示されることがあります。例えば、範囲に数値以外のデータが含まれている場合や、範囲が空白の場合に発生します。範囲指定が正しいか確認し、必要に応じて修正してください。
研修で教えていると、範囲指定を間違えてエラーになるケースをよく見かけます。特に、列全体を指定する場合(例:A:A)は、注意が必要です。
UNIQUE関数と詳細フィルター:どちらを使うべき?
Excelには、UNIQUE関数以外にも重複を除外する方法があります。その一つが詳細フィルターです。UNIQUE関数と詳細フィルター、どちらを使うべきか、それぞれのメリットとデメリットを比較してみましょう。
UNIQUE関数のメリットとデメリット
- メリット:
- 数式を入力するだけで、簡単に重複を除外できる。
- 元のデータが変更されると、自動的に結果が更新される。
- 他の関数と組み合わせて、高度な分析が可能。
- デメリット:
- Excel 2019以降のバージョンでしか利用できない。
- 結果を表示する範囲を事前に確保する必要がある。
詳細フィルターのメリットとデメリット
- メリット:
- 古いバージョンのExcelでも利用できる。
- 重複を除外した結果を、元の場所に上書きできる。
- デメリット:
- 操作手順がUNIQUE関数よりも複雑。
- 元のデータが変更されても、自動的に結果が更新されない。
UNIQUE関数は、Excel 2019以降のバージョンを使用しており、動的なリストを作成したい場合に適しています。一方、詳細フィルターは、古いバージョンのExcelを使用している場合や、元のデータを上書きしたい場合に適しています。
UNIQUE関数で業務効率を劇的に改善する3つのヒント
UNIQUE関数を使いこなすことで、業務効率を大幅に改善できます。ここでは、さらに効率的にUNIQUE関数を活用するための3つのヒントを紹介します。
ヒント1:Ctrl+Shift+Enterで配列数式にする(古いExcelの場合)
Excel 2016以前のバージョンでは、UNIQUE関数は利用できません。しかし、配列数式を使うことで、同様の結果を得ることができます。配列数式とは、複数のセルに対して同時に計算を行う数式のことです。UNIQUE関数の代わりに、以下の数式を使用します。
{=IFERROR(INDEX(範囲,MATCH(0,COUNTIF($B$1:B1,範囲),0)),"")}
この数式を入力後、Ctrl+Shift+Enterキーを押すことで、配列数式として確定します。数式の両端に{}が自動的に追加されます。配列数式は、計算に時間がかかることがあるため、大量のデータを処理する場合は注意が必要です。
ポイント: 配列数式は、数式を入力後、必ずCtrl+Shift+Enterキーを押して確定してください。Enterキーだけを押すと、正しく計算されません。
ヒント2:VBAと組み合わせることで、処理を自動化する
VBA(Visual Basic for Applications)は、Excelの機能を拡張するためのプログラミング言語です。UNIQUE関数とVBAを組み合わせることで、重複除外処理を自動化することができます。例えば、特定のフォルダにあるすべてのExcelファイルからデータを抽出し、重複を除外したリストを作成する、といった処理を自動化できます。
VBAのコード例:
Sub 重複除外()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Sheet1") 'シート名を指定
Dim lastRow As Long
lastRow = ws.Cells(Rows.Count, 1).End(xlUp).Row 'A列の最終行を取得
Dim uniqueList As Object
Set uniqueList = CreateObject("Scripting.Dictionary")
Dim i As Long
For i = 1 To lastRow
Dim value As String
value = ws.Cells(i, 1).Value 'A列の値を読み込む
If Not uniqueList.Exists(value) Then
uniqueList.Add value, 1
End If
Next i
Dim j As Long
j = 1
Dim key As Variant
For Each key In uniqueList.Keys
ws.Cells(j, 2).Value = key 'B列に重複を除いた値を書き出す
j = j + 1
Next key
End Sub
このVBAコードは、Sheet1のA列にあるデータから重複を除外し、B列に結果を表示します。VBAの知識が必要になりますが、一度設定すれば、繰り返し行う作業を自動化できます。
ヒント3:Power Queryを使って、外部データソースから重複を除外する
Power Queryは、Excelに組み込まれているデータ変換ツールです。Power Queryを使うことで、外部データソース(例えば、CSVファイル、データベース、Webサイト)からデータをインポートし、重複を除外することができます。Power Queryは、GUIベースで操作できるため、VBAのようなプログラミング知識は必要ありません。
- 「データ」タブから「データの取得と変換」グループにある「データの取得」をクリックします。
- データソースを選択し、データをインポートします。
- Power Queryエディターが開いたら、重複を除外したい列を選択し、「ホーム」タブにある「行の削除」から「重複の削除」をクリックします。
- 「閉じて読み込む」をクリックし、結果をExcelシートに表示します。
Power Queryを使うことで、様々なデータソースからデータを集約し、重複を除外したリストを作成できます。特に、大量のデータを処理する場合や、定期的に更新されるデータを処理する場合に便利です。
Googleスプレッドシートとの比較:UNIQUE関数の挙動の違い
Excelと並んでよく使われる表計算ソフトであるGoogleスプレッドシートにも、UNIQUE関数が搭載されています。しかし、ExcelとGoogleスプレッドシートでは、UNIQUE関数の挙動にいくつかの違いがあります。
ExcelとGoogleスプレッドシートのUNIQUE関数の違い
- 引数の指定方法:
- Excelでは、範囲、[列方向]、[出現回数]の3つの引数を指定できます。
- Googleスプレッドシートでは、範囲のみを指定できます。[列方向]や[出現回数]の指定はできません。
- 結果の表示方法:
- Excelでは、結果がスピルされます(自動的に範囲が拡張されます)。
- Googleスプレッドシートでは、結果は数式を入力したセルに表示されます。
- エラー処理:
- Excelでは、#SPILL!エラーが表示されることがあります。
- Googleスプレッドシートでは、結果を表示する範囲にデータがある場合、エラーは表示されず、データが上書きされます。
GoogleスプレッドシートのUNIQUE関数は、Excelよりもシンプルですが、[列方向]や[出現回数]を指定できないため、高度な分析には向きません。一方、ExcelのUNIQUE関数は、より柔軟な分析が可能ですが、#SPILL!エラーに注意する必要があります。
Excelのバージョン別対応:UNIQUE関数が利用できない場合の代替案
UNIQUE関数は、Excel 2019以降のバージョンで利用可能です。古いバージョンのExcelを使用している場合、UNIQUE関数を利用できません。ここでは、UNIQUE関数が利用できない場合の代替案を紹介します。
詳細フィルターを使う
詳細フィルターは、Excelの古いバージョンでも利用できる機能です。詳細フィルターを使うことで、重複を除外したリストを作成できます。
- データ範囲を選択します。
- 「データ」タブから「詳細設定」をクリックします。
- 「指定した範囲」を選択し、「重複するレコードは無視する」にチェックを入れます。
- 「OK」をクリックします。
詳細フィルターを使うことで、重複を除外したリストを別の場所に作成できます。ただし、元のデータが変更されても、自動的に結果が更新されない点に注意が必要です。
配列数式を使う
Excel 2016以前のバージョンでは、UNIQUE関数の代わりに配列数式を使うことで、同様の結果を得ることができます。配列数式の使い方は、前述の「業務効率を劇的に改善する3つのヒント」で解説しています。
UNIQUE関数に関するFAQ:よくある質問とその回答
UNIQUE関数について、よくある質問とその回答をまとめました。
Q1:UNIQUE関数で空白セルを除外する方法はありますか?
A1:UNIQUE関数だけでは、空白セルを除外することはできません。IF関数と組み合わせることで、空白セルを除外することができます。例えば、以下の数式を使用します。
=UNIQUE(IF(範囲="", "", 範囲))
この数式は、範囲内の空白セルを空白のままにし、それ以外のセルをUNIQUE関数で処理します。
Q2:UNIQUE関数で大文字と小文字を区別する方法はありますか?
A2:UNIQUE関数では、大文字と小文字は区別されません。大文字と小文字を区別したい場合は、EXACT関数と組み合わせる必要があります。ただし、EXACT関数は配列数式として使用する必要があります。
Q3:UNIQUE関数の結果を並べ替える方法はありますか?
A3:SORT関数と組み合わせることで、UNIQUE関数の結果を並べ替えることができます。例えば、以下の数式を使用します。
=SORT(UNIQUE(範囲))
この数式は、UNIQUE関数の結果を昇順に並べ替えます。降順に並べ替えたい場合は、SORT関数の第2引数に-1を指定します。
Q4:UNIQUE関数の結果を別のシートに表示する方法はありますか?
A4:UNIQUE関数の数式を別のシートに入力するだけで、結果を別のシートに表示できます。数式内でシート名を指定することも可能です。例えば、Sheet1のA1:A10の範囲から重複を除外したリストをSheet2に表示したい場合は、Sheet2のセルに以下の数式を入力します。
=UNIQUE(Sheet1!A1:A10)
明日からの実務に取り入れるための3ステップ
UNIQUE関数は、Excelのデータ分析において非常に強力なツールです。この記事で学んだことを活かして、明日からの実務にUNIQUE関数を取り入れてみましょう。
- まずは、簡単な顧客リストでUNIQUE関数を試してみましょう。
- 次に、FILTER関数と組み合わせて、特定の条件に合致する重複除外リストを作成してみましょう。
- 最後に、VBAやPower Queryを使って、処理を自動化してみましょう。
基本を押さえれば、応用は自然と広がる。


コメント