Article

【Excel】UNIQUE関数とIF・COUNTIF・TEXTJOIN等を組み合わせる実用パターン9選

この記事で分かること

ExcelのUNIQUE関数をIF・COUNTIF・TEXTJOIN・SUMIFS・XLOOKUPと組み合わせる応用9パターンを、重複なしリスト化以外のシーンで実機解説します。

Excel の UNIQUE 関数は重複を除いて一意なリストを作る関数ですが、UNIQUE だけで終わらせるとデータ集計の半分しか活かせません。たとえば「商品ごとの売上を合計したい」「重複なしリストにマスタから単価を当てたい」「条件付きで出現回数を数えたい」といった業務シーンは、UNIQUE を他の関数と組み合わせて初めて 1 つの数式で完結します。

本記事では、Excel 2024 ビルド 19929 で実機検証した UNIQUE 関数と他の関数を組み合わせる実用 9 パターンを、業務シーン・コピー用数式・実行結果・注意点の固定型でまとめました。最後に配布 xlsx(12 シート構成)も用意しています。

この記事のスコープと対象バージョン

UNIQUE 関数まわりの記事は「重複なしリストを動的に作る」「重複なしキーで集計する」「重複の罠を回避する」など切り口が複数あります。本記事は UNIQUE と他の関数を組み合わせる応用パターンに絞り、別記事への送り先を明示します。

(A) 読者の目的別の読み先

やりたいこと読む先
UNIQUE と FILTER / SORT で動的リストを作るpost 32079
ドロップダウンリストの元データを動的更新するpost 32079
IF で分類してから重複を消す本記事 H2-2 / H2-3
COUNTIF / SUMIFS で重複なしキーを集計する本記事 H2-4 / H2-5 / H2-7
TEXTJOIN で重複なしリストを区切り連結する本記事 H2-6
XLOOKUP で重複なしリストへマスタ情報を付ける本記事 H2-8
MAP / LAMBDA で配列の各要素に同じ処理をかける本記事 H2-9
期間内のユニーク件数を数える(YEAR/MONTH 等)本記事 H2-10
UNIQUE 関数の基本(書式・スピル)post 1984
結果から空白や 0 を除外する詳細手順post 11200
複数列の重複(複合キー)post 11378

(B) 対象バージョン

関数ごとに対応 Excel のバージョンが異なります。本記事の主要式は動的配列対応版(Excel 2021 / 2024 / Microsoft 365)が前提です。Excel 2019 以前ではそのまま使えません。

関数主な対応環境
UNIQUE / FILTER / SORT / SORTBY / XLOOKUPExcel 2021 / 2024 / Microsoft 365
MAP / LAMBDA / BYROW / HSTACKExcel 2024 / Microsoft 365
COUNTIF / COUNTIFS / SUMIFS / TEXTJOIN / CONCAT比較的広い環境(ただし本記事の式は UNIQUE のスピル前提)

サンプルは扱いやすさのため固定範囲(C2:C13)で書きます。実務で行追加に自動追従させたい場合はテーブル化し、=UNIQUE(売上テーブル[商品名]) のような構造化参照を使ってください。

UNIQUE と他関数の組み合わせのスコープ図解。動的リスト系は post 32079、応用 9 パターンは本記事で扱う棲み分け

パターン1:UNIQUE × IF — 値をラベルに置き換えてから重複除去

使いどころ:元データの数値や複雑な値を、業務で扱いやすいラベルに変換してから重複除去したいときに使います。たとえば「数量 3 以上なら大量発注、それ以外は通常発注」のようにカテゴリ分けして、その種類だけを一覧化するシーンです。

元データ(売上台帳の D 列「数量」)に対して、IF で 2 段階のラベルに変換しつつ UNIQUE で集約します。

=UNIQUE(IF(D2:D13>=3, "大量発注", "通常発注"))

結果:「通常発注」「大量発注」の 2 件が縦にスピル表示されます。並びは UNIQUE の出現順を保持するので、元データの 1 行目が数量 2 なら「通常発注」が先に出ます。

3 段階以上のネスト IF も同様に書けます。金額カテゴリを「高額・中額・小額」の 3 段階に分けて重複なしリスト化する例です。

=UNIQUE(IF(E2:E13>=100000, "高額", IF(E2:E13>=30000, "中額", "小額")))

結果:「高額・小額・中額」の 3 件(元データの出現順)。並びをアイウエオ順や金額順にしたい場合は外側に SORT を被せます。

注意点:UNIQUE は出現順を保持します。並び順を制御したいときは外側に SORT を、降順なら SORT の第 3 引数に -1 を指定してください。

Excel UNIQUE 関数と IF 関数でネスト 3 段階のラベル変換を実行し、高額・小額・中額の 3 件にスピル展開した実機結果

パターン2:UNIQUE × IF — 条件絞り込みで FALSE が混ざる罠と回避策

使いどころ:「担当者 = 田中」のような条件で対象を絞ってから重複除去したいシーンです。検索で「unique if 組み合わせ」と調べてたどり着く方の多くがこの用途を想定しています。ただし、ここには IF 特有の罠があります。

罠 1:IF の第 3 引数を省略すると FALSE が結果に残る

=UNIQUE(IF(B2:B13="田中", C2:C13))

実機結果:「ノートPC、FALSE、モニター、キーボード」の 4 件。IF の条件が偽になった行で第 3 引数(false 時の値)が省略されているため、論理値 FALSE が独立した値として UNIQUE 結果に混ざります。

罠 2:IF の第 3 引数を “” にしても空文字が独立行で残る

=UNIQUE(IF(B2:B13="田中", C2:C13, ""))

実機結果:「ノートPC、(空文字)、モニター、キーボード」の 4 件。UNIQUE は空文字 "" も 1 つの値として扱うため、空文字が 1 行残ります。

正しい解:FILTER で書き直す

=UNIQUE(FILTER(C2:C13, B2:B13="田中"))

実機結果:「ノートPC、モニター、キーボード」の 3 件だけが返ります。FILTER は条件を満たす行だけを抜き出すので、FALSE や空文字は発生しません。

注意点:FILTER は該当 0 件のとき #CALC! エラーになります。「該当なしのとき表示するメッセージ」を入れたい場合は、FILTER の第 3 引数を使います。

=UNIQUE(FILTER(C2:C13, B2:B13="不在", "該当なし"))

条件絞り込み・AND/OR 連結・並べ替え・ドロップダウン連携まで通しで知りたい方は、姉妹記事の UNIQUE・SORT・FILTER 関数を組み合わせて重複なしの動的リストを作る方法を参照してください。

Excel UNIQUE と IF を組み合わせると FALSE や空文字が独立行として残る罠と、UNIQUE と FILTER で正しく 3 件を返す解決策の対比

パターン3:UNIQUE × COUNTIF — 出現回数で重複度ランキング

使いどころ:商品ごとの発注回数、アンケート選択肢の票数、エラーログのメッセージ別件数など、「重複なしキーごとに何回出てきたか」を一覧化したいシーンです。

2 セルに分けて書きます。A1 に重複なしリスト、B1 に各キーの出現回数を COUNTIF で集計します。

=UNIQUE(C2:C13)
=COUNTIF(C2:C13, A1#)

A1# はスピル範囲参照で、A1 から始まる UNIQUE 結果全体を指します。COUNTIF はそのスピル範囲に追従して各キーの件数を縦に並べて返します。

実機結果:A1# に「ノートPC、マウス、モニター、キーボード」、B1# に「4、3、3、2」。

降順ランキングにしたいときは、商品名と件数を HSTACK で横結合してから SORTBY で並べ替えます。同回数の項目までしっかり並び順を固定したいなら、第 2 キーに商品名昇順を追加します。

=SORTBY(HSTACK(A1#, B1#), B1#, -1, A1#, 1)

注意点:SORT 単独だと同回数の並びは元の UNIQUE 順のままになります(仕様としての安定性は保証されていません)。同順位の並びまで確実にしたいときは、SORTBY で第 2 キー(例:商品名昇順)を必ず追加してください。

Excel UNIQUE と COUNTIF で商品ごとの出現回数を集計し、SORTBY で件数降順・商品名昇順の 2 段ソートを実現したランキング表

パターン4:UNIQUE × COUNTIFS — 条件を加えた出現回数集計

使いどころ:「商品ごとの発注回数」をさらに「担当者 = 田中」のような追加条件で絞りたいときに使います。「田中さんは商品ごとに何回ずつ発注したか」を一発で算出できます。

=UNIQUE(C2:C13)
=COUNTIFS(C2:C13, A1#, B2:B13, "田中")

実機結果:A1# に「ノートPC、マウス、モニター、キーボード」、B1# に「2、0、2、1」。担当者「田中」の発注回数だけが商品ごとに数えられます。

注意点:COUNTIFS は条件を満たす行が 0 件のキー(マウス=0)も結果に残します。「0 件は隠したい」ときは、FILTER で 0 行を除外してください。

=FILTER(HSTACK(A1#, B1#), B1#>0)
Excel UNIQUE と COUNTIFS で担当者「田中」の発注回数を商品別に集計した結果。0 件キーも残り、FILTER で 0 行を除外した一覧との対比

パターン5:UNIQUE × TEXTJOIN — 区切り文字付きで連結(CONCAT との違いも)

使いどころ:重複なしリストを 1 つのセルにカンマ区切りで並べたいシーンです。メール本文への貼り付け、レポートのサマリ、商品一覧テキスト化などで便利です。

=TEXTJOIN(", ", TRUE, UNIQUE(C2:C13))

実機結果:「ノートPC, マウス, モニター, キーボード」(1 つの文字列)。

TEXTJOIN 第 2 引数の重要性:TRUE にすると空セル・空文字をスキップします。前述のように UNIQUE は空文字を独立行として残すことがあるので、TEXTJOIN を組み合わせるときは TRUE を指定するのが安全です。

第 2 引数結果
TRUE(空を無視)ノートPC, モニター, キーボード
FALSE(空も含める)ノートPC, , モニター, キーボード

※ どちらも UNIQUE(IF(B2:B13=”田中”, C2:C13, “”)) を入力に渡したケース。

CONCAT との違い:CONCAT は区切り文字を指定できません。

=CONCAT(UNIQUE(C2:C13))

実機結果:「ノートPCマウスモニターキーボード」(区切りなし)。区切りを入れたければ事前に &"/" で連結する手もありますが、末尾に余分な区切りが残ります。区切り連結が必要な場面では TEXTJOIN を第一選択にしてください。

Excel UNIQUE と TEXTJOIN の第 2 引数 TRUE / FALSE で空文字の扱いが変わる挙動と、CONCAT は区切り文字を指定できないため「ノートPCマウスモニターキーボード」とつながる比較

パターン6:UNIQUE × SUMIFS — 重複なしキーごとの金額集計

使いどころ:「商品ごとの売上合計」「担当者ごとの達成額」「顧客ごとの累計金額」など、UNIQUE で重複なしのキーを作り、SUMIFS で各キーの数値合計を算出するシーンです。ピボットテーブルを起動するほどでない簡易集計に向きます。

=UNIQUE(C2:C13)
=SUMIFS(E2:E13, C2:C13, A1#)

実機結果:A1# に「ノートPC、マウス、モニター、キーボード」、B1# に「720000、25000、180000、48000」。

金額の大きい順に並べたいときは、SORTBY で B1# 降順、同額の場合の第 2 キーに商品名昇順を入れて並びを固定します。

=SORTBY(HSTACK(A1#, B1#), B1#, -1, A1#, 1)

注意点:SUMIFS は UNIQUE# の縦スピルにそのまま追従します。横にしたい場合は UNIQUE を TRANSPOSE で横展開すれば、SUMIFS も横向きにスピルします。

Excel UNIQUE と SUMIFS で重複なし商品キーごとの売上金額を合計し、SORTBY で金額降順・商品名昇順の安定 2 段ソートを実現した集計表

パターン7:UNIQUE × XLOOKUP — 重複なしリストにマスタを当てる

使いどころ:売上台帳から重複なしの商品リストを作り、別シートのマスタから単価や品名を引き当てたいシーンです。マスタ照合は VLOOKUP より XLOOKUP のほうがエラー時の代替値を直接指定できて安全です。

マスタを別表(F2:G5)に用意した前提です。F 列が商品名、G 列が単価とします。

=UNIQUE(C2:C13)
=XLOOKUP(A1#, F2:F5, G2:G5, "未登録")

実機結果:A1# に「ノートPC、マウス、モニター、キーボード」、B1# に「120000、2500、30000、8000」。

注意点:XLOOKUP の第 4 引数(一致なし時の値)に "未登録" を入れておくと、マスタ漏れがあったときに #N/A ではなく分かりやすい文字列が表示されます。マスタ整備の漏れチェックにそのまま使えます。

Excel UNIQUE で得た重複なし商品リストに対し、XLOOKUP の第 4 引数「未登録」付きで別表マスタから単価 120000・2500・30000・8000 を引き当てた結果

パターン8:UNIQUE × MAP / LAMBDA — 配列の各要素に同じ処理(非再帰)

使いどころ:UNIQUE で得た各要素に対して、同じ計算を一括で適用したいシーンです。SUMIFS や COUNTIFS で代用できる場面が多いですが、より柔軟に「LAMBDA 内で複数行の処理を書きたい」ときに MAP / LAMBDA の組み合わせが効きます。Excel 2024 または Microsoft 365 の環境が必要です。

=MAP(UNIQUE(C2:C13), LAMBDA(x, SUMIFS(E2:E13, C2:C13, x)))

実機結果:UNIQUE で得た商品名(ノートPC・マウス・モニター・キーボード)の各要素 x に対して、SUMIFS が動き、結果として「720000・25000・180000・48000」が縦にスピルします。SUMIFS 単発のスピル結果と一致します。

BYROW で書いても同じ結果になります(単列スピルの場合)。

=BYROW(UNIQUE(C2:C13), LAMBDA(r, SUMIFS(E2:E13, C2:C13, r)))

注意点:LAMBDA 再帰の制限。LAMBDA は名前マネージャーに登録して再帰関数として再利用できますが、LET 内のローカル名として書いた場合は自己参照ができません。実機で以下の差を確認しました。

書き方数式実機結果
LET ローカル名・単純再帰=LET(myfact, LAMBDA(n, IF(n<=1, 1, n*myfact(n-1))), myfact(5))#NAME? 相当
LET ローカル名・枝分かれ再帰=LET(myfib, LAMBDA(n, IF(n<2, n, myfib(n-1)+myfib(n-2))), myfib(10))#NAME? 相当
名前マネージャー登録・単純再帰名前 myfact_named に LAMBDA を登録、セルで =myfact_named(5)120
名前マネージャー登録・枝分かれ再帰名前 myfib_named に LAMBDA を登録、セルで =myfib_named(10)55

LET のローカル名で書いた LAMBDA は、その名前で自己参照できません(単純再帰でも #NAME? 相当になります)。再帰関数を使う場合は、Excel の「名前の管理」(数式タブ → 名前の管理) に LAMBDA を登録するのが正しい使い方です。なお、ローカル名に fact のような Excel 組み込み関数名(FACT())と衝突する名前を使うと、結果は LAMBDA 再帰ではなく組み込み関数の計算になります。

本記事の MAP / LAMBDA はあくまで「UNIQUE の各要素に処理を当てる」非再帰用途に絞ります。再帰を本格的に使う場合は名前マネージャー登録、と覚えておけば十分です。

Excel UNIQUE で得た商品リストの各要素に MAP + LAMBDA で SUMIFS を適用し、720000・25000・180000・48000 を縦スピルで得た非再帰の動的処理結果

パターン9:UNIQUE × YEAR・MONTH — 期間内のユニーク件数を数える

使いどころ:「2023 年 1 月のユニーク顧客数」「直近 3 か月のリピーター数」など、期間で絞ってからユニーク件数を数えるシーンです。YEAR 関数MONTH 関数で日付を年・月に分解し、FILTER で絞ってから UNIQUE で重複除去、最後に ROWS 関数で件数化します。

このパターンには、よく見かける書き間違いがあります。FILTER の引数仕様は FILTER(配列, 含む条件, [一致なしの場合]) で、第 3 引数は AND の第 2 条件ではなく、結果が空のときの代替値です。AND を取りたいときは配列論理 * を使います。

検証データ(A 列=日付、B 列=顧客)

日付顧客
2023/01/05A
2023/01/08B
2023/02/01C
2024/01/10D
2023/01/20A

誤った書き方(第 3 引数を AND の追加条件と誤解する)

=ROWS(UNIQUE(FILTER(B2:B6, YEAR(A2:A6)=2023, MONTH(A2:A6)=1)))

実機結果:3。MONTH(A2:A6)=1 が第 3 引数 if_empty として渡されて条件として効かないため、2023 年 2 月の顧客 C まで含まれてしまいます。

正しい書き方(複数条件は * で配列論理に)

=ROWS(UNIQUE(FILTER(B2:B6, (YEAR(A2:A6)=2023)*(MONTH(A2:A6)=1))))

実機結果:2。2023 年 1 月の顧客 A と B のみが正しく抽出されます。同じ顧客 A が 2 回登場しても UNIQUE で重複除去されるため、ユニーク件数として 2 が返ります。

注意点:複数条件では、AND 条件に *、OR 条件に + を使います。AND() 関数は配列をスカラーに縮約してしまうため、ここでは使えません。

Excel UNIQUE と FILTER と YEAR・MONTH で期間内のユニーク顧客件数を求めるとき、第 3 引数誤用の旧式は 3 件、配列論理「*」を使った修正式は 2 件で結果が異なる対比

うまくいかないときの罠(空セル「0」/ FALSE 混入 / 空文字残存)

9 パターンの中で実機で頻発する 3 つの罠を、症状・原因・回避策の三段でまとめます。

症状回避策
空セルが「0」になる=UNIQUE(F2:F7) で F 列に空セルがあると、結果に 0 が混入する=UNIQUE(FILTER(F2:F7, F2:F7<>"")) で空白を除外。本物の数値 0 を残したい場合はこの式のまま使う。0 も除外したい場合だけ、(F2:F7<>"")*(F2:F7<>0) の 2 条件にする
IF の FALSE 混入=UNIQUE(IF(B2:B13="田中", C2:C13)) の結果に FALSE が独立行で残るIF を UNIQUE(FILTER(C2:C13, B2:B13="田中")) に書き換える
IF 第 3 引数 “” が独立行で残る=UNIQUE(IF(B2:B13="田中", C2:C13, "")) の結果に空文字 "" が独立行で残る外側に FILTER(範囲, 範囲<>"") で空文字除外、または最初から UNIQUE(FILTER(...)) に切り替える

「0 が見えたら元データの空セルを疑う(ただし本物の 0 と区別する)」「FALSE が見えたら IF を FILTER に置き換えるべき合図」と覚えておくと、原因の切り分けが速くなります。詳しい空白・0 除外パターンは UNIQUE 関数の結果から空白やゼロを除外する計算設定で解説しています。

なお、@ マークが勝手に付いて UNIQUE のスピルが想定どおりに動かない(暗黙的交差)の罠は別記事 数式の「@」が勝手につく 3 つの原因と外し方に切り出しています。

Excel UNIQUE で果物リストの空セルが 0 に化けるナイーブ結果と、FILTER で空白だけ除外して本物の 0 を残す式、空白と数値 0 の両方を除外する式の 3 通り対比

関連記事と次のステップ

本記事は UNIQUE 関数の「他関数との組み合わせカタログ」です。隣接トピックは以下の記事へまとめています。

まとめ

UNIQUE 関数は他の関数と組み合わせると、業務集計の起点として大きな力を発揮します。本記事で紹介した実用 9 パターンを再掲します。

  1. UNIQUE × IF(ラベル変換):値を業務カテゴリに変換してから重複除去
  2. UNIQUE × IF(条件絞り込みの罠):FALSE や空文字の混入を FILTER で回避
  3. UNIQUE × COUNTIF:重複なしキーごとの出現回数ランキング
  4. UNIQUE × COUNTIFS:条件を加えた出現回数集計
  5. UNIQUE × TEXTJOIN:区切り文字付きで連結(CONCAT との違い)
  6. UNIQUE × SUMIFS:重複なしキーごとの金額集計
  7. UNIQUE × XLOOKUP:重複なしリストにマスタを当てる
  8. UNIQUE × MAP / LAMBDA:配列の各要素に同じ処理(非再帰)
  9. UNIQUE × YEAR / MONTH:期間内のユニーク件数(FILTER 第 3 引数の誤用に注意)

本記事で扱った 9 パターンに加え、罠の比較サンプル・YEAR/MONTH の誤った式と正しい式の対比を 1 つのブックにまとめた配布 xlsx を用意しています。シートごとに数式と結果が並び、対象 Excel バージョンも一覧表にしてあります。

UNIQUE 関数の組み合わせ実用 9 パターン サンプルブック(unique-combinations-sample.xlsx)をダウンロード

.xlsx 形式 / 12 シート構成(元データ + 9 パターン + 罠比較 + 一覧)。Excel 2024 で実機確認済み。UNIQUE / FILTER 中心のシートは Excel 2021・Microsoft 365 でも使える構成です。MAP / LAMBDA を含むシートは Excel 2024 または Microsoft 365 が必要です。

動的リスト系(FILTER + UNIQUE + SORT で重複なしリストを並べ替えてドロップダウンに連携する流れ)は 姉妹記事でまとめて解説しています。本記事の応用 9 パターンと合わせて、UNIQUE を業務で使い倒す全体像が掴めます。

Next Read

このあと読む記事

今の内容に近い記事から、次の1本と補助記事を続けて見つけられるようにしています。

Keep Exploring

このテーマをさらに探す

同じテーマの入口記事と更新記事を、一覧の形でまとめています。

コメント