重複を扱う|使う関数の選び方と、つまずく場所

執筆者:

カテゴリ:

重複を扱うのイメージ

目的別

重複を扱う

Excel関数辞典

重複を扱うとき、使える関数は複数あります。どれを選ぶかは、やりたいことの条件で決まります。

先に決めること。 重複を消したいのか、数えたいのか、印を付けたいのか。ここが決まれば、関数は1つに絞れます。

記載内容は 2026年8月時点のものです。ExcelとGoogleスプレッドシートで使える関数が違う場合があります。


重複を扱うの記事構成図
重複を扱う:この記事で扱う内容
このページの中身(25項目)
  1. 場面別・使う関数の早見
  2. 1. 一意の一覧
  3. 2. 重複の件数
  4. 3. 重複に印
  5. 4. 重複を除いて数える
  6. 5. 2列の重複
  7. 6. 重複行の抽出
  8. 選び方の順番
  9. この記事で使っている言葉
  10. UNIQUEの応用
  11. 実際にあった相談と、その原因
  12. 数式を使わないという選択
  13. よく組む形をそのまま貼る
  14. UNIQUEを身につける順序
  15. UNIQUEと似た関数の違い
  16. 数式の前に、データを整える
  17. エラーが出たときの読み方
  18. ExcelとGoogleスプレッドシートの違い
  19. 数が増えて重くなったとき
  20. 引き継ぐときに書いておくこと
  21. よくある間違い
  22. 書いたあとの確認
  23. 数式の読み解き方
  24. 実務で使う場面
  25. UNIQUEについてよくある質問

場面別・使う関数の早見

消す前に数えてください。何件が重複なのかを把握しないまま削除すると、必要な行まで消えます。

やりたいこと使う関数
一意の一覧UNIQUE
重複の件数COUNTIF
重複に印COUNTIF
重複を除いて数えるCOUNTUNIQUE
2列の重複COUNTIFS
重複行の抽出FILTER

表の使い方

左の列で自分のやりたいことを探し、右の関数の記事に進んでください。複数に当てはまる場合は、条件が多いほうを選んでください。条件が少ない関数で書くと、後から条件を足せません。

1. 一意の一覧

使うのは UNIQUE です。

一意の一覧という条件に、最も素直に対応する関数です。

つまずきやすいところ

範囲の行数が揃っているか、参照を固定したか。この2つで、結果がずれる原因の大半が説明できます。

この場面で確認すること

参照する範囲に、集計対象外の行が混ざっていないかを確認してください。

重複を扱うの要点図
重複を扱う

2. 重複の件数

使うのは COUNTIF です。

重複の件数という条件に、最も素直に対応する関数です。

つまずきやすいところ

範囲の行数が揃っているか、参照を固定したか。この2つで、結果がずれる原因の大半が説明できます。

この場面で確認すること

参照する範囲に、集計対象外の行が混ざっていないかを確認してください。

3. 重複に印

使うのは COUNTIF です。

重複に印という条件に、最も素直に対応する関数です。

つまずきやすいところ

範囲の行数が揃っているか、参照を固定したか。この2つで、結果がずれる原因の大半が説明できます。

この場面で確認すること

参照する範囲に、集計対象外の行が混ざっていないかを確認してください。

4. 重複を除いて数える

使うのは COUNTUNIQUE です。

=COUNTUNIQUE(範囲)

重複を除いた件数を数える関数です。種類の数を数える場面で使います。

つまずきやすいところ

Excelでは名前が異なります。共有先の環境を確認してください。

この場面で確認すること

参照する範囲に、集計対象外の行が混ざっていないかを確認してください。

5. 2列の重複

使うのは COUNTIFS です。

2列の重複という条件に、最も素直に対応する関数です。

つまずきやすいところ

範囲の行数が揃っているか、参照を固定したか。この2つで、結果がずれる原因の大半が説明できます。

この場面で確認すること

参照する範囲に、集計対象外の行が混ざっていないかを確認してください。

6. 重複行の抽出

使うのは FILTER です。

重複行の抽出という条件に、最も素直に対応する関数です。

つまずきやすいところ

範囲の行数が揃っているか、参照を固定したか。この2つで、結果がずれる原因の大半が説明できます。

この場面で確認すること

参照する範囲に、集計対象外の行が混ざっていないかを確認してください。

選び方の順番

重複を消したいのか、数えたいのか、印を付けたいのか。この一点が決まらないまま関数を探すと、どれも当てはまるように見えて決まりません。

1. 出したい結果を一文で書く

「何を、どの条件で、どんな形で出したいか」。この一文が書ければ、関数はほぼ決まります。

2. 条件の数を数える

条件が1つか、複数か。ここで使える関数が分かれます。将来増える可能性があるなら、最初から複数条件に対応する形にしてください。

3. 返したい値の形を決める

1つの値か、複数行か。複数行を返す関数は、展開先を空けておく必要があります。

4. 共有先の環境を確認する

新しい関数は、古い環境で開くとエラーになります。社外に渡すファイルでは、この一点で選択肢が変わります。

5. 短く書けるほうを選ぶ

同じ結果になるなら、書く量が少ないほうを選んでください。後から読むときの負担が違います。

この記事で使っている言葉

先に言葉の定義を揃えておきます。

引数

関数の括弧の中に渡す値のことです。UNIQUEでは =UNIQUE(...) の括弧内が引数にあたります。順番に意味があるため、位置を入れ替えると結果が変わります。

範囲

A2:A100 のように、複数のセルをまとめて指定したものです。行数が揃っていないと、複数の範囲を渡す関数では結果が狂います。

絶対参照と相対参照

$ を付けた $A$2 は絶対参照で、どこにコピーしてもずれません。A2 は相対参照で、コピーした方向に応じてずれます。この使い分けが、結果がずれる原因の大半を占めます。

配列

1つの数式が複数の値を返す形です。返した先のセルが埋まっていると展開できず、エラーになります。

揮発性

関係のない編集でも再計算される性質です。NOW TODAY INDIRECT OFFSET が該当します。多用するとファイル全体が重くなります。

値として貼り付ける

数式ではなく計算結果だけを残す操作です。参照元を消しても壊れなくなり、再計算の対象からも外れます。

作業列

途中の計算結果を置くための列です。長い数式を1つ書くより、短い数式を分けて置くほうが間違いを見つけやすくなります。完成後に非表示にすれば、見た目は変わりません。

UNIQUEの応用

基本形で足りない場面のための書き方です。

さらに複雑にする前に

入れ子が3段を超えたら、作業列に分けてください。1つの数式にまとめることに価値はありません。後から読める形のほうが、結果的に速く終わります。

応用が必要かどうかの判断

他の人が触る表では、短い数式を並べるほうが保守できます。

実際にあった相談と、その原因

相談の内容から、どこを見るべきかを判断する例です。

「昨日まで動いていた数式が壊れた」

参照先の表で、列が挿入されたか削除されたかのどちらかです。列番号を直書きした式は、参照先の列が増減した時点で別の意味になります。急ぎなら番号を直し、恒久的に直すなら位置に依存しない書き方にしてください。

「合計が1円合わない」

丸めの位置が揃っていません。表示形式で小数を隠しても、値そのものは丸められません。どの段階で ROUND を入れるかを先に決めてください。各行で丸めるか、合計してから丸めるかで結果が変わります。

「一部の行だけ結果がおかしい」

その行のデータだけ型が違うか、余分な空白が入っています。型と文字数を出して、正しく動く行との差を探してください。

「下にコピーすると値が変わる」

参照を固定していません。動いてはいけない範囲に $ を付けてください。上の数行は正しく動くため、気づくのが遅れます。

「共有したら相手の画面でエラーになる」

UNIQUEや組み合わせている関数が、相手の環境で使えません。#NAME? が出ている場合はこれです。対応範囲の広い書き方に変えるか、値として渡してください。

「重くて開けない」

列全体の指定と、揮発性の関数が原因のことがほとんどです。範囲を区切り、確定した期間は値に変換してください。

数式を使わないという選択

UNIQUEを使う前に、別の手段で足りないかを確認してください。

ピボットテーブルで足りる場合

集計の軸が決まっているなら、集計機能のほうが速く、保守も簡単です。数式で組む理由がないか、一度確認してください。

フィルタで足りる場合

一時的に絞り込んで見るだけなら、フィルタ機能で十分です。ただし共有中のファイルでは、他の人の表示にも影響します。そこが問題になる場合だけ、関数で抽出してください。

条件付き書式で足りる場合

色を付けたいだけなら、列を増やす必要はありません。ただし範囲が広いほど負荷になるため、必要な範囲に絞ってください。

入力規則で防げる場合

誤りを後から探すより、入力の段階で防ぐほうが手間がかかりません。選択肢を決められる項目は、プルダウンにしてください。

手作業のほうが早い場合

繰り返さない作業に式を組む必要はありません。繰り返す作業かどうかで判断してください。

それでも数式を使う理由

元データが更新される表では、数式が最も確実です。手作業は、更新のたびに同じ手間がかかり、抜けも起きます。

よく組む形をそのまま貼る

UNIQUEは単体より、組み合わせた形で使うことがほとんどです。

空欄なら計算しない

=IF($A2="", "", UNIQUE(...))

未入力の行に0やエラーが並ぶのを防ぎます。集計表では必ず入れてください。

エラーを空欄にする

=IFERROR(UNIQUE(...), "")

配布用の表を整える段階で使います。原因を追っている間は外してください。

エラーに文言を出す

=IFERROR(UNIQUE(...), "要確認")

空欄より実務では役に立ちます。後からフィルタで抽出できるためです。

条件で使い分ける

=IF($B2="対象", UNIQUE(...), 0)

対象外の行を0にする形です。合計に含めたくない行がある場合に使います。

COUNTIF と組み合わせる

=COUNTIF(UNIQUE(...))

内側から評価されます。3段以上の入れ子になったら作業列に分けてください。

結果を丸める

=ROUND(UNIQUE(...), 0)

小数の誤差を残したまま集計すると、合計が1円ずれます。丸める位置を決めてください。

貼るときの注意

... の部分は、この記事の実例から自分の表に合う形を選んで置き換えてください。参照を固定するかどうかは、コピーする方向で決まります。下方向なら行、右方向なら列を固定するかを先に判断してください。

UNIQUEを身につける順序

全部を理解してから使おうとすると、いつまでも使えません。

まず、基本形1つだけ

=UNIQUE(...)

一意の一覧形です。まずこれだけを覚えてください。実務で使う場面の大半はこの形で足ります。

次に、参照の固定

コピーでずれてよい参照と、ずれてはいけない参照を分けて考えます。ここを理解すると、コピーで結果が狂うことがなくなります。

次に、エラーの扱い

=IFERROR(UNIQUE(...),"") の形です。配布する表では必要になります。ただし原因を追う段階では外してください。

次に、組み合わせ

COUNTIF など、目的の近い関数と組み合わせる形です。ここまで来ると、たいていの要望に応えられます。

最後に、代替手段

UNIQUE以外の書き方も知っておくと、環境が変わったときに困りません。共有先で使えない関数があるとき、代わりの書き方を出せるようになります。

覚えなくてよいこと

すべての引数を暗記する必要はありません。書き始めれば候補が出ます。覚えるべきなのは、何ができる関数かという一点だけです。

UNIQUEと似た関数の違い

似た関数との差は、実際に使う場面で決まります。

UNIQUE と COUNTIF

UNIQUEは重複を扱う関数です。COUNTIFとは、扱えるデータの形か、返す値の種類が違います。

将来条件が増える可能性があるなら、拡張できるほうを選んでください。

UNIQUE と COUNTIF

UNIQUEは重複を扱う関数です。COUNTIFとは、扱えるデータの形か、返す値の種類が違います。

将来条件が増える可能性があるなら、拡張できるほうを選んでください。

UNIQUE と COUNTUNIQUE

UNIQUEは重複を扱う関数です。COUNTUNIQUEとは、扱えるデータの形か、返す値の種類が違います。

将来条件が増える可能性があるなら、拡張できるほうを選んでください。

判断の基準

  1. 出したい結果を一文で書く
  2. 条件の数を数える
  3. 返したい値が1つか複数かを決める
  4. 共有先の環境を確認する
  5. 短く書けるほうを選ぶ

この順で考えれば、関数は1つに絞れます。一覧から選ぼうとすると、どれも使えそうに見えて決まりません。

数式の前に、データを整える

数式が正しくても、データが揃っていなければ結果は合いません。

型を揃える

=ISNUMBER(A2)

数値として入っているかを判定します。見た目が数字でも文字列なら FALSE になります。システムから書き出したデータでは、これが原因のことが多くあります。

前後の空白を落とす

=TRIM(A2)

前後の空白と、語間の連続した空白を1つに詰めます。見た目では判別できないため、検索や集計が合わない原因になります。

全角と半角を揃える

=ASC(A2)

全角の英数字と記号を半角にします。逆方向は JIS です。手入力が混じる列では、この差が原因になりがちです。

改行を取り除く

=SUBSTITUTE(A2,CHAR(10),"")

セル内改行はコピー時に紛れ込みます。CHAR(10) が改行文字です。

文字数を比べて確認する

=LEN(A2)&" / "&LEN(B2)

見た目が同じなのに一致しないとき、まずこれを見ます。数が違えば、空白か不可視文字が入っています。

掃除は作業列にまとめる

数式の中に掃除を書き込むと、長くなって読めなくなります。掃除済みの値を作業列に出し、そこを参照する形にしてください。元データを直接書き換えないので、後から検証できます。

エラーが出たときの読み方

表示されている記号によって、見るべき場所が変わります。

記号意味最初に見るところ
#N/A検索した値が見つからない検索値の前後の空白、全角と半角、数値と文字列の違いを確認してください
#REF!参照先が消えている参照していた行や列を削除していないかを確認してください
#VALUE!引数の型が合っていない数値を渡すべきところに文字列が入っていないかを確認してください
#DIV/0!0で割っている割る側が0または空欄になっていないかを確認してください
#NAME?関数名が認識されていない綴りの誤りか、その環境で使えない関数かを確認してください
#NUM!数値として扱えない指定した順位や桁数が範囲を超えていないかを確認してください

#N/A が出た場合

検索した値が見つからない状態です。検索値の前後の空白、全角と半角、数値と文字列の違いを確認してください。

同じ数式でも、参照先が変わればこのエラーは出ます。

#REF! が出た場合

参照先が消えている状態です。参照していた行や列を削除していないかを確認してください。

同じ数式でも、参照先が変わればこのエラーは出ます。

#VALUE! が出た場合

引数の型が合っていない状態です。数値を渡すべきところに文字列が入っていないかを確認してください。

同じ数式でも、参照先が変わればこのエラーは出ます。

#DIV/0! が出た場合

0で割っている状態です。割る側が0または空欄になっていないかを確認してください。

同じ数式でも、参照先が変わればこのエラーは出ます。

エラーを隠すべきかどうか

包めば見た目は整いますが、間違いにも気づけなくなります。原因を追っている段階では外してください。配布用の表に仕上げる段階になってから包むのが正しい順序です。

ExcelとGoogleスプレッドシートの違い

UNIQUE自体は共通ですが、組み合わせる関数に差が出ることがあります。

使える関数が違う

FILTER UNIQUE SORT は、Excel側では対応が遅く入った機能です。古い環境で開くと #NAME? になります。社外に渡すファイルでは、この点だけで使う関数が変わります。

配列の扱いが違う

スプレッドシートでは ARRAYFORMULA を使って一気に展開するのが定石です。Excelでは自動的に広がる仕様になっています。同じ結果を出す書き方が違うため、そのまま移すと動きません。

引数の区切りが違うことがある

地域の設定によって、区切りがカンマではなくセミコロンになる環境があります。コピーした数式が動かない場合、ここを疑ってください。

日付の基準が違う

日付の内部表現は同じでも、基準となる日がずれている場合があります。ファイルをまたいで日付を計算するときは注意してください。

どちらで作るか

共有先が決まっていないなら、対応範囲の広い書き方を選んでください。後から書き換えるより、最初から限定するほうが手戻りが少なくなります。

数が増えて重くなったとき

重くなる原因は限られています。上から順に確認してください。

範囲を列全体で指定しない

A:A は書くのが楽ですが、空行まで対象に含めます。$A$2:$A$5000 のように行を区切ってください。行数が多いほど差が出ます。

同じ計算を繰り返さない

同じ引数でUNIQUEを何度も書いているなら、作業列に一度だけ出して、他はその列を参照させてください。

揮発性の関数を減らす

無関係なセルを触っただけで再計算が走る関数があります。NOW TODAY INDIRECT OFFSET です。多用すると、ファイル全体が重くなります。

確定した部分は値にする

締めた期間の集計は、値貼り付けにしてください。数式が残っている限り、再計算の対象になり続けます。

条件付き書式を減らす

数式を使った条件付き書式は、範囲が広いほど負荷になります。必要な範囲だけに絞ってください。

引き継ぐときに書いておくこと

数式は動いていても、意図は残りません。渡す前に、次の点をシート内にメモしてください。3分で終わります。

何を出している数式か

UNIQUEで重複を扱うという意図を、一行で書いてください。読めば分かると思っても、数か月後の自分には分かりません。

どの表を参照しているか

参照先のシート名と、その表の更新担当。参照先が別ファイルなら、その場所も書いてください。

該当しないときの扱い

空欄なのか、文言なのか、エラーのままなのか。書いていないと、受け取った側は空欄をデータなしと読みます。

触ってはいけない場所

範囲の行数が揃っているか、参照を固定したかで結果が変わります。この点を書いておかないと、引き継いだ人が同じところでつまずきます。

使った関数の対応環境

新しい関数を使っている場合、古い環境では開けません。共有の範囲が広がる可能性があるなら、必ず明記してください。

よくある間違い

同じ間違いが繰り返し起きています。先に知っておくと避けられます。

参照を固定していない

下方向にコピーしたときに、動いてはいけない範囲までずれます。上の数行は正しく動くため、気づくのが遅れます。表の最終行まで確認してください。

型が揃っていない

表示が同じでも、型が違えば別の値として扱われます。=ISNUMBER(A2) で確認できます。システムから書き出したデータでは、これが原因のことが多くあります。

空欄と0を区別していない

空欄が未入力を意味するのか0を意味するのかで、表の読み方が変わります。どちらとして扱うかを決めてから数式を書いてください。

範囲の行数が揃っていない

複数の範囲を渡す関数では、行数がずれると結果が狂います。エラーにならず値が返るため、気づきにくい種類の間違いです。

結果を検算していない

範囲の行数が揃っているか、参照を固定したかで結果が変わります。別の方法で同じ数字を出して、突き合わせてください。

数式が長くなりすぎている

入れ子が3段を超えると、書いた本人でも読めなくなります。作業列に分けてください。完成後に非表示にすれば見た目は変わりません。

書いたあとの確認

UNIQUEを新しく書いたら、次を順に確認してください。数分で終わります。

参照を固定したか

コピーする式は、固定漏れがないかを最初に確認してください。上の数行だけ見て判断しないでください。範囲のずれは下のほうで表面化します。

一番下の行まで正しいか

最終行までスクロールして、結果を確認してください。途中から値が変わっていないかを見ます。

別の方法で検算したか

同じ数字を別の関数でも出して、突き合わせてください。UNIQUEの結果だけを見ても、正しいかどうかは判断できません。

空欄とゼロを区別したか

空欄が未入力を意味するのか0を意味するのかで、表の読み方が変わります。どちらとして扱うかを決めてから書いてください。

エラーの扱いを決めたか

隠すのか、残すのか。用途に合っているかを確認してください。

他の人が読めるか

入れ子が3段を超えていないか。超えているなら、作業列に分けることを検討してください。

数式の読み解き方

長い式に出会ったときの読み方を整理します。

内側から読む

入れ子になった数式は、いちばん内側の括弧から評価されます。外側から読もうとすると、途中で分からなくなります。

引数の区切りで分ける

カンマで区切られた単位が引数です。括弧の対応を見ながら、どこまでが1つの引数かを確認してください。

一部だけを別セルで試す

長い数式の一部を切り出して、別のセルに貼って結果を見てください。どこまでが正しく動いているかが分かります。

この記事の例で確認する

=UNIQUE(...)

一意の一覧形です。内側から順に、何が返っているかを確認してください。一度分解して読めば、似た形の数式はすべて読めるようになります。

分からない部分は残しておく

全部を理解してから触ろうとすると、いつまでも進みません。変える必要のある部分だけを特定して、そこだけ直してください。触っていない部分は、動いている限り放っておいて構いません。

実務で使う場面

どんなときにUNIQUEが要るのかを、作業の側から整理します。

集計表を作るとき

元データから数字を出す段階で使います。一意の一覧のが典型的な形です。この段階で型を揃えておかないと、後の集計が全部ずれます。

他人に渡す表を整えるとき

見た目を整える段階です。桁や表記を揃えると、読み手が数字を比較できるようになります。渡す前に、意図しない値が混ざっていないかを確認してください。

元データを掃除するとき

システムから書き出したデータには、余分な空白や型のずれが混ざります。前処理は作業列にまとめてください。式の中に書き込むと読めなくなります。

定期的に更新する表を作るとき

同じ処理が毎月あるなら、重複を扱うで組んでおくと手作業が消えます。手作業を残すと、そこが毎回の負担になります。

数字が合わない原因を探すとき

検算に使えます。UNIQUEで出した値と、別の方法で出した値を突き合わせると、どこでずれているかが分かります。

UNIQUEについてよくある質問

Q. UNIQUEが使えません

その環境で対応していない可能性があります。#NAME? が出ている場合は、綴りの誤りか、環境が未対応かのどちらかです。

Q. 結果が0になります

参照先が空欄か、数値として認識されていない可能性があります。ISNUMBER で型を確認してください。

Q. 下にコピーすると結果が変わります

参照を固定していません。動いてはいけない部分に $ を付けてください。

Q. エラーを消したいのですが

=IFERROR(UNIQUE(...),"") で包めます。ただし原因を追っている段階では外してください。

Q. UNIQUEとCOUNTIFはどちらを使うべきですか

やりたいことで決まります。出したい結果を一文で書いてから選んでください。

Q. Excelでも同じように使えますか

関数自体は使えますが、組み合わせる関数に差があります。共有先の環境を先に確認してください。

Q. 重くて開けません

列全体の指定をやめ、確定した期間は値に変換してください。この2つで大半が改善します。

Q. 引数を省略できますか

省略できる引数と、できない引数があります。省略すると既定の動作になり、意図と違う結果になることがあります。

Q. 計算結果を固定したいのですが

値として貼り付けてください。参照元を消しても壊れなくなります。

Q. 他の関数も見たいのですが

→ 全関数の一覧 から探せます。