ExcelでUNIQUE関数が使えない時の対処法をお探しですね。
広告
Excel UNIQUE関数が使えないときの原因と解決法|FILTER関数との組み合わせ方も解説
Excelで重複を取り除いたリストを作りたいとき、UNIQUE関数はとても便利です。
でも実際に使おうとすると、「関数が認識されない」「#SPILL! って何?」「FILTER関数と組み合わせたら #CALC! が出た」など、うまく動かないことがあります。
この記事では、UNIQUE関数が使えない原因とエラーの直し方、さらにFILTER関数と組み合わせて「条件に合うデータだけを重複なしで抽出する方法」を、実務で使いやすい形で解説します。
1. UNIQUE関数ってどんな関数?重複を自動で消してくれる便利機能
UNIQUE関数は、指定した範囲から重複を取り除いて、一意の値だけを一覧表示してくれるExcel関数です。
たとえば、顧客名が何度も出てくる売上データから顧客リストを作ったり、商品名が重複している受注明細から商品一覧を作ったりできます。
基本の書き方は `=UNIQUE(範囲)` です。
A2からA100に商品名が入っているなら、`=UNIQUE(A2:A100)` と入力するだけで、重複を除いた商品名が下方向に自動で並びます。
この自動展開の仕組みを「スピル」といって、1つのセルに数式を入れるだけで、複数のセルに結果が表示されるのが特徴です。
UNIQUE関数の基本構文
“`
=UNIQUE(配列, [列の比較], [回数指定])
“`
– **第1引数(配列)**:重複を取り除きたい範囲を指定します
– **第2引数(列の比較)**:横方向に比較したい場合はTRUEを指定(省略すると縦方向)
– **第3引数(回数指定)**:省略またはFALSEなら「重複を1つにまとめた一覧」、TRUEなら「1回だけ登場する値」を返します
普通に重複削除リストを作りたいなら、第2・第3引数は省略して `=UNIQUE(A2:A100)` の形で使うのが安全です。
FILTER関数と組み合わせるとさらに便利
UNIQUE関数だけでも便利ですが、条件を付けて抽出したいときはFILTER関数との組み合わせが重要になります。
たとえば「東京支店の顧客だけを重複なしで一覧化したい」「売上が10万円以上の商品名だけをリスト化したい」といった場合です。
考え方としては、まずFILTER関数で条件に合うデータだけを抽出して、その結果にUNIQUE関数をかけるイメージです。
– **UNIQUE関数**:重複をなくす
– **FILTER関数**:条件で絞り込む
この2つを分けて理解すると、数式の組み立てがずっと分かりやすくなります。
2. UNIQUE関数が使えない原因とよくあるエラーの直し方
原因1:Excelのバージョンが対応していない(#NAME?エラー)
UNIQUE関数が使えない一番多い原因は、**Excelのバージョンが対応していないこと**です。
UNIQUE関数はMicrosoft 365やExcel 2021以降で使える「動的配列関数」です。
Excel 2019以前の買い切り版では基本的に使えないため、`=UNIQUE(…)` と入力しても `#NAME?` エラーになったり、関数候補に表示されなかったりします。
**対処法:**
– 数式の書き方を直しても解決しません
– 対応版のExcelを使うか、従来の方法で代替する必要があります
– 「重複の削除」機能
– 詳細設定フィルター
– ピボットテーブル
– Power Query
原因2:出力先が邪魔されている(#SPILL!エラー)
次によくあるのが `#SPILL!` エラーです。
これはUNIQUE関数の結果を表示するための「スピル範囲」が、既存の値や数式、結合セルなどに邪魔されているときに出ます。
たとえば、UNIQUE関数が10件の一覧を下方向に表示しようとしているのに、出力先の途中に別の文字が入っていると、Excelは結果を展開できません。
**対処法:**
– 数式を入力したセルの下や右にある不要な値を削除する
– 結合セルを解除する
– 十分に空いた場所へ数式を移動する
数式セルを選択すると、スピル予定範囲が枠で示されるので、どのセルが邪魔になっているか確認できます。
原因3:FILTER関数で条件に合うデータがない(#CALC!エラー)
FILTER関数と組み合わせたときに出やすいのが `#CALC!` エラーです。
これは、FILTER関数で条件に合うデータが1件もなく、空の場合の表示を指定していないときに起こります。
たとえば `=UNIQUE(FILTER(A2:A100,B2:B100=”福岡”))` で、B列に福岡が存在しない場合、FILTER関数が空の配列を返せずエラーになることがあります。
**対処法:**
“`
=UNIQUE(FILTER(A2:A100,B2:B100=”福岡”,”該当なし”))
“`
FILTER関数の第3引数に「該当なし」などの代替表示を指定しましょう。
原因4:範囲の行数が合っていない(#VALUE!エラー)
`#VALUE!` は、FILTER関数の抽出範囲と条件範囲の行数が合っていない場合に発生しやすいエラーです。
たとえば `A2:A100` を抽出するのに、条件範囲を `B2:B50` にしているようなズレがあると、Excelはどの行を判定すればよいか分かりません。
**対処法:**
– 抽出範囲と条件範囲の行数を必ず揃える
– `A2:A100` なら `B2:B100` にする
エラー原因のまとめ
| エラー | 原因 | 確認すべきポイント |
|——–|——|——————-|
| `#NAME?` | バージョン非対応 | Excel 365/2021以降か確認 |
| `#SPILL!` | 出力先が邪魔されている | 値・結合セル・テーブルがないか |
| `#CALC!` | 該当データなし | FILTER関数の第3引数を指定 |
| `#VALUE!` | 範囲の行数不一致 | 抽出範囲と条件範囲を揃える |
見落としがちな原因:余分なスペースや表記ゆれ
見た目は同じなのに重複として扱われない場合は、**余分なスペースや全角・半角の違い**が原因になっていることがあります。
たとえば「東京」と「東京 」は、後ろに空白があるため別の値として扱われます。
商品名や顧客名の一覧を作る前に、TRIM関数で余分な空白を取り除いたり、表記ルールを統一したりすると、UNIQUE関数の結果が安定します。
**ポイント:**
Excelのエラーは関数そのものの故障ではなく、バージョン・出力先・範囲指定・元データの状態に原因があることがほとんどです。
3. FILTER関数とUNIQUE関数で条件付きの重複なしリストを作る方法
基本の組み合わせ方
FILTER関数とUNIQUE関数を組み合わせる基本形は次の通りです。
“`
=UNIQUE(FILTER(抽出したい範囲, 条件範囲=条件, “該当なし”))
“`
たとえば、A列に顧客名、B列に地域があって、**東京の顧客名だけを重複なしで抽出したい**場合はこうなります。
“`
=UNIQUE(FILTER(A2:A100, B2:B100=”東京”, “該当なし”))
“`
この数式では、まずFILTER関数がB列の地域が「東京」の行だけを対象にしてA列の顧客名を取り出します。
その結果に対してUNIQUE関数が重複を取り除きます。
**考え方:**
関数は内側から処理されるので、「FILTERで絞る → UNIQUEで重複を消す」という順番で考えると理解しやすくなります。
空白を除外する方法
A列の顧客名に空白がある状態で東京だけを抽出すると、条件に合う空白もUNIQUE関数の結果に含まれることがあります。
空白を除外したい場合は、条件に `A2:A100<>“”` を追加します。
“`
=UNIQUE(FILTER(A2:A100, (B2:B100=”東京”)*(A2:A100<>“”), “該当なし”))
“`
これで、地域が東京で、なおかつ顧客名が空白ではないデータだけを抽出できます。
**ポイント:**
FILTER関数では、AND条件を `*`、OR条件を `+` でつなぐのが基本です。
複数条件で抽出する
複数条件の場合も、考え方は同じです。
たとえば「東京支店、かつ売上金額が100,000円以上の商品名を重複なしで抽出」したい場合、A列に商品名、B列に支店、C列に売上金額が入っているなら、こう書けます。
“`
=UNIQUE(FILTER(A2:A100, (B2:B100=”東京”)*(C2:C100>=100000), “該当なし”))
“`
OR条件の場合
「東京または大阪」の顧客を抽出したい場合は、OR条件部分をカッコでまとめます。
“`
=UNIQUE(FILTER(A2:A100, ((B2:B100=”東京”)+(B2:B100=”大阪”))*(A2:A100<>“”), “該当なし”))
“`
カッコが不足すると、意図しない条件判定になりやすいので注意しましょう。
セル参照を使ってもっと便利に
実務では、条件値を数式の中に直接書くより、**セル参照にした方が使いやすく**なります。
たとえばE1セルに地域名を入力して、次のように書きます。
“`
=UNIQUE(FILTER(A2:A100, (B2:B100=E1)*(A2:A100<>“”), “該当なし”))
“`
こうしておけば、E1を「東京」から「大阪」に変更するだけで、抽出結果が自動で切り替わります。
さらに、UNIQUE関数で作った地域リストを入力規則のプルダウンに使えば、選択した地域に応じて顧客や商品を抽出する簡易レポートを作ることもできます。
毎回フィルターをかけ直す必要がなくなるので、月次レポートや営業管理表との相性がいい使い方です。
4. 実務で失敗しないための注意点と代替方法
テーブル化で範囲を自動更新
UNIQUE関数とFILTER関数を安定して使うには、元データを「Excelのテーブル」として管理する方法が有効です。
通常のセル範囲で `A2:A100` のように指定していると、101行目以降に新しいデータを追加したとき、数式の対象外になってしまうことがあります。
テーブル化しておけば、行を追加したときに参照範囲が自動で広がり、抽出結果も更新されやすくなります。
**注意点:**
スピル関数の出力先をテーブル内に置くと正しく展開できないことがあるため、UNIQUE関数やFILTER関数の結果はテーブルの外側に表示するのが安全です。
FILTER関数の第3引数をどう指定するか
FILTER関数の第3引数「空の場合」をどう指定するかも重要です。
– **`”該当なし”`**:条件に合うデータがないときに分かりやすい表示になる(人が見る一覧表向け)
– **`””`(空白)**:後続の数式で集計する場合に扱いやすい(ただしUNIQUE関数と組み合わせると空白が1件の結果として見えることがある)
目的に応じて使い分けることが大切です。
UNIQUE関数が使えない古いExcelでの代替方法
UNIQUE関数が使えない古いExcel環境では、同じことを1つの数式で完全に再現するのは難しい場合があります。
その場合は、目的に応じて代替手段を選びます。
| 目的 | 代替方法 | 注意点 |
|——|———|——–|
| 単純に重複を消したい | 「データ」タブの「重複の削除」 | 元データが変更されても自動更新されない |
| 条件付きで抽出したい | オートフィルター、詳細設定フィルター | 手動操作が必要 |
| 大量データを定期的に整形 | Power Query | 学習コストはあるが強力 |
ただし、これらはUNIQUE関数やFILTER関数のように元データの変更へ即時に連動するとは限らないため、更新作業が必要かどうかを確認しておきましょう。
よく使う数式パターン集
最後に、よく使う数式パターンを押さえておくと、日々の作業で迷いにくくなります。
**1. 重複なし一覧**
“`
=UNIQUE(A2:A100)
“`
**2. 条件付き重複なし一覧**
“`
=UNIQUE(FILTER(A2:A100, B2:B100=E1, “該当なし”))
“`
**3. 空白を除いた条件付き一覧**
“`
=UNIQUE(FILTER(A2:A100, (B2:B100=E1)*(A2:A100<>“”), “該当なし”))
“`
**4. 条件付きで抽出して並べ替え**
“`
=SORT(UNIQUE(FILTER(A2:A100, B2:B100=E1, “該当なし”)))
“`
まとめ:UNIQUE関数が使えないときの解決の流れ
Excel UNIQUE関数が使えないときは、まず次の4つを確認するのが解決への近道です。
1. **対応バージョンか**(Microsoft 365、Excel 2021以降)
2. **スピル範囲が邪魔されていないか**(値、結合セル、テーブル)
3. **範囲指定が正しいか**(抽出範囲と条件範囲の行数が一致)
4. **元データに表記ゆれがないか**(余分なスペース、全角・半角)
そのうえでFILTER関数と組み合わせれば、「条件に合うデータだけを抽出し、重複を除いて一覧化する」という作業を数式だけで自動化できます。
手作業のフィルターやコピーに頼っているリスト作成ほど効果が出やすいので、顧客管理、売上集計、商品一覧、アンケート集計などで積極的に活用すると、Excel作業の効率化につながります。
ぜひ試してみてください。
広告
