複数のソースからデータを取り込んだり、多くの人が作業に加わったりすると、Excel表内でデータが重複してしまうことは避けられない。しかし、売上表から取引先や商品の一覧だけを抽出したい場合、重複を排除した「リスト」が必要となる。このような場合に真価を発揮するのが、Excel 365およびExcel 2021以降で利用可能な「UNIQUE」関数である。本Tech TIPSでは、UNIQUE関数の基本的な使い方から重複を排除したリストからドロップダウンリストの選択肢を作成する方法までを解説する。
対象:Excel 2021/2024/365
UNIQUE関数で重複データを瞬殺!複数のソースからデータを取り込んだり、多くの人が作業に加わったりすると、Excel表内でデータが重複してしまうことは避けられない。
単純に重複したデータを削除したいのであれば、「Microsoft Excel(エクセル)」の重複データを削除する機能を使えばよい(重複するデータを削除する方法は、Tech TIPS「Excelで住所録などの重複データを一発で削除する」参照のこと)。また重複データが分かるように色付けしたい場合は、Tech TIPS「【Excel】重複データを色付けして瞬時にダブりをチェックする」を使う方法もある。
しかし、売上表から取引先や商品の一覧だけを抽出したい、あるいはドロップダウンリストの選択肢として使いたいといったケースでは、重複を排除した「リスト」が必要になる。
このような場合に便利なのが、Excel 365およびExcel 2021以降で利用可能な「UNIQUE」関数だ。UNIQUE関数は、指定した範囲や配列の中から、重複しない一意の値(ユニークな値)のみを抽出してリストとして返す関数である。従来の複雑な配列数式や手動操作から解放され、1つの数式で処理が完了するだけでなく、元のデータが変更されると結果も自動で更新されるという大きな利便性がある。
本Tech TIPSでは、このUNIQUE関数の使い方を紹介しよう。
従来のExcelでは、重複排除を行うには「データ」タブの「重複の削除」機能を使うか、あるいは複雑な配列数式を組む必要があった。しかし、UNIQUE関数を使えば、1つの数式を入力するだけでこの処理が完了し、さらに元のデータが変更されると結果も自動で更新されるという利便性がある。
UNIQUE関数の構文は以下の通りだ。
=UNIQUE(配列,[列/行の比較],[出現回数])
| 引数名 | 説明 | 指定方法 |
|---|---|---|
| 配列(必須) | 一意の値を取り出したい元のデータ範囲を指定 | 「A1:A10」などのようにセル範囲を指定 |
| 列/行の比較(省略可能) | 重複をチェックする方向を指定 | FALSE/0:行ごとに比較し、一意の行を返す(標準) TRUE/1:列ごとに比較し、一意の列を返す |
| 出現回数(省略可能) | どの値を取り出すかを指定 | FALSE/0:全ての一意の値を返す(標準) TRUE/1:一度だけ出現する値(真にユニークな値)のみを返す |
| UNIQUE関数の引数 | ||
最も一般的で簡単な使い方は、1つの列にあるデータの重複を排除してリスト化するケースだろう。この場合、省略可能な引数は特に指定する必要はない。
商品ごとの売上データをまとめたいような場合、表から商品名をダブりなく抽出する必要がある。
商品名の列(A2:A30)から、重複しない商品名のリストを作成する場合、結果を表示したい「D2」セルなどに以下の数式を入力すればよい。
=UNIQUE(A2:A30)
これで数式を入力したセルから下に、重複を排除したリストが自動的に表示される。
UNIQUE関数で導き出した商品名ごとに売上の合計を計算したい場合は、SUMIF関数を使って、「E2」セルなどに以下のように数式を入力すればよい。
SUMIF関数の書式は以下のようになっている。「範囲」には「検索条件」で検索するセルの範囲を指定し、「検索条件」にはセルを検索するための数値や文字列を指定、「合計範囲」には合計したい値が入力されているセル範囲をそれぞれ指定する。
=SUMIF(範囲,検索条件,[合計範囲])
UNIQUE関数で抽出した商品名を「検索条件」として、合計を計算する場合は、以下の数式となる。「A2:A30」は商品名の列、「D2」はUNIQUE関数で抽出した商品名、それに対して売上列「B2:B30」から該当する商品の売上を取り出して合計している。
=SUMIF(A2:A30,D2,B2:B30)
このように時系列などで出力された商品ごとの売上が簡単に集計できるようになる。
UNIQUE関数が対象とする範囲を含む表は「テーブル」にしておくとよい(表を「テーブル」にする方法は、Tech TIPS「Excelで表を『テーブル』にしたけど数式の自動反映や行/列の自動拡張が働きません」参照のこと)。こうしておくと、表にデータが追加された場合でも、UNIQUE関数が対象とする範囲が変更され、自動的に結果に反映されるようになる。
配列を「テーブル」で指定する場合は、UNIQUE関数の引数として以下のように「テーブル名」を指定した構造化参照を使う。
=UNIQUE(テーブル1[商品名])
UNIQUE関数で指定する配列はテーブルにする(1)
UNIQUE関数で指定する配列はテーブルにする(2)
UNIQUE関数で指定する配列はテーブルにする(4)配列として指定したセル範囲に空白(未記入)となっているセルが含まれていると、UNIQUE関数の結果として空白が「0」として表示されてしまう。これを避けるためには、数式の後ろに「&""」を追加して、意図的に空白を挿入するようにしておくとよい。
=UNIQUE(A2:A30)&""
ちなみに空白を除きたい場合は、以下のようにFILTER関数を使い、空白でないセルだけを抽出してからUNIQUE関数を適用すればよい。
=UNIQUE(FILTER(A2:A30, A2:A30<>""))
UNIQUE関数では、全角と半角、英数字の大文字と小文字の区別がないため、半角の「A」と「a」、全角の「A」と「a」は全て同じ値として扱われる。商品名などの表記がバラついているだけで同一視してよいなら、これは便利な仕様といえる。しかし、逆にこれらを別々の文字としたい場合、UNIQUE関数の使用には注意が必要だ。
UNIQUE関数では大文字/小文字などの区別がない「出現回数」の引数を「TRUE」または「1」に指定することで、データ範囲内で完全に一度しか出現していない値のみを抽出できる。
顧客リストから、一度しか購入履歴のない「新規顧客」を特定したい場合などに有効である。
=UNIQUE(A2:A30,,TRUE)
一度だけ出現する値を抽出するUNIQUE関数は、複数の列を同時に指定することで、それらの組み合わせが一意である行を抽出できる。
例えばアンケートなどで収集した「氏名」と「メールアドレス」の一覧から重複を取り除いて、案内リストを作成したい場合などに使える。「氏名」と「メールアドレス」の両方の組み合わせが同じものが除かれるため、「氏名」だけや、「メールアドレス」だけで重複を取り除くと、同姓同名や家族で同じメールアドレスを使っている場合などがリストから排除されてしまうのを防ぐことができる。
UNIQUE関数の複合条件による一意なデータの特定商品名を選択するデータの入力規則(ドロップダウンリスト)を作成したいような場合、既にある販売データからUNIQUE関数を使って重複のない商品名リストを抽出するとよい。販売データを「テーブル」にしておけば、新しい商品が追加された場合でも、自動でドロップダウンリストの選択肢に反映されるようにできる。
ポイントは、ドロップダウンリストの「元の値」として、UNIQUE関数で抽出したリストを「スピル範囲」として参照させることだ(ドロップダウンリストの作成方法は、Tech TIPS「Excelでプルダウンリスト(ドロップダウンリスト)を作成する方法」参照のこと)。例えば、「D2」セルにUNIQUE関数を入力して抽出した場合、「元の値」には「=$D$2#」と入力しておく(「#」はスピル演算子)。
これで、販売データに新商品が追加されると、UNIQUE関数で抽出されたリストが更新されて新商品が加わる。その加わった新商品は、ドロップダウンリストに反映されるといった自動化の流れが出来上がる。
UNIQUE関数でドロップダウンリストのデータソースを作成する(3)
UNIQUE関数でドロップダウンリストのデータソースを作成する(4)これにより、新しい商品が追加されるたびに、手動でドロップダウンリストを編集する必要がなくなり、リストの管理が自動化できる。
Copyright© Digital Advantage Corp. All Rights Reserved.