今回紹介するのは、重複を除いた形でデータの一覧(リスト)を作成してくれる関数UNIQUEの使い方だ。UNIQUEは2019年12月にリリースされた関数で、最新のExcel 2021とMicrosoft 365でのみ使用できる関数となる。使い方次第で便利に活用できる関数となるが、そのためには基本的な動作を把握しておく必要がある。

UNIQUE関数の基本的な使い方

関数UNIQUEは、重複しているデータを処理するときに便利に活用できる関数だ。たとえば、重複しているデータを除いた形で「データの一覧」(リスト)を作成したい場合などに活用できる。

  • UNIQUE関数を使ったデータ数のカウント

言葉で説明するだけでは理解しづらいと思うので、具体的な例を紹介していこう。以下の図は、あるネットショップにおける2024年1月の販売状況を記録したものだ。商品が購入された「日付」と購入者の「氏名」、そして「購入金額」がまとめられており、データは全部で26件ある。

  • 販売状況を記録した表

データ件数は少ないが、関数UNIQUEの使い方を把握するための“簡単な例”として見て頂ければ幸いだ。実際には、何百件、何千件という規模のデータがあると考えると、関数UNIQUEの便利さを実感できるだろう。

この表をよく見ると、1ヶ月の間に「何回も買い物をしてくれた方」がいることを確認できる。

  • 購入者が重複しているデータ

データは全部で26件あるため、購入者の“延べ人数”は26人といえるが、「何回も購入してくれた人」を1人とカウントした“ユニーク数”はもっと少ないと考えられる。

このような“ユニーク数”を調べたり、その一覧(ユニークリスト)を作成したりするときに関数UNIQUEが活用できる。ちなみに、関数UNIQUEの書式は以下のようになっている。 ◆関数UNIQUEの書式
=UNIQUE(セル範囲, [横方向へ検索], [重複なし限定])

第2引数と第3引数はTRUE/FALSEで指定する仕様になっている。これらの引数は省略することも可能だ。まずは、最も簡単な記述例から紹介していこう。関数UNIQUEの第1引数に「氏名」のデータが入力されているセル範囲を指定する。

  • 関数UNIQUEの入力

「Enter」キーを押して関数を実行すると、以下の図のようなリストが取得される。関数UNIQUEはスピルに対応しているため、1つの関数で複数個のデータを一気に取得することが可能だ。

  • 関数UNIQUEにより取得されたデータ

このリストは“重複を除いた形”で「氏名」のデータをピックアップしたものとなる。つまり、「この1ヵ月間にネットショップを利用したユーザーの一覧」といえる。あとは、このリストにある「氏名」の個数をカウントしていくだけ。これで、この1ヶ月間の購入者数を調べることができる。

「データの個数」は関数COUNTAで簡単に調べられる。このとき、「=COUNTA(F2:F20)」のようにセル範囲を指定しても構わないが、より汎用性が高くなるようにF列全体(F:F)をセル範囲に指定した例を紹介しておこう。なお、この場合は「◆購入者一覧」の見出しをデータ数から除外するために、マイナス1の数式を追加しておく必要がある。

  • データ数をCOUNTAで調べる

この結果は「19」という数値になった。つまり、「この1ヵ月間にネットショップを利用したユーザーは19人であった」ということを把握できる。

  • 重複なしの購入者数

なお、購入者の「氏名」をリスト化するのではなく、単に人数(ユニークなデータ数)だけを知りたいときは、以下の図のようにUNIQUEとCOUNTAを組み合わせて記述しても構わない。

  • UNIQUEとCOUNTAと組み合わせて使用する場合

この場合、関数UNIQUEにより架空のリスト(配列)が作成され、そこに含まれるデータの個数を関数COUNTAがカウントしてくれる、という動作になる。もちろん、この場合は「見出しを除外するマイナス1」の計算は不要である。

この関数を実行すると「19」という数値が表示される。先ほど同じ数値が得られることを確認できるだろう。

  • 重複なしの購入者数

このように“重複を除いた形”でデータの一覧(リスト)を作成したり、そのデータの個数を調べたりするときに活用できるのが関数UNIQUEとなる。

「重複がないデータ」だけをカウントするときは?

続いては、先ほど省略していた「第2引数」と「第3引数」について解説していこう。関数UNIQUEの「第3引数」にTRUEを指定すると、リスト化するデータを“重複がないデータ”に限定することが可能となる。

先ほどと同じ表を使って実践してみよう。第1引数に「氏名」のデータのセル範囲を指定し、第3引数にTRUEを指定する。なお、第2引数は指定しないので、カンマを2回続けて記述することに注意しよう。

  • 関数UNIQUEの入力

「Enter」キーを押して関数を実行すると、今度は以下の図のようなリストが取得された。このリストは「セル範囲内に1回だけ登場するデータ」の一覧となる。つまり、“1回だけ買い物をしたユーザー”をピックアップしたリストと考えられる。

  • 関数UNIQUEにより取得されたデータ

このリストについても「データの個数」を関数COUNTAで確認してみよう。先ほどと同様に「=COUNTA(F:F)-1」と関数を入力すると、「15」という結果を得ることができた。つまり、「1回だけ買い物をしたユーザーは15人であった」ということを把握できる。

  • 1回だけ購入した人の数

もちろん、「=COUNTA(UNIQUE(C2:C27,,TRUE))」のように入力して、リストを作成せずに人数だけを調べることも可能だ。

「重複があるデータ」だけをカウントするには?

続いては、「何回も買い物をしてくれたユーザー」の人数を調べる方法について補足しておこう。先ほど解説したように、関数UNIQUEには「1回だけ登場するデータ」だけを取得する機能が用意されている。その一方で「何回も重複して登場するデータ」だけを取得する機能は用意されていない。

よって、以下に示した手順で人数を調べる必要がある。

(1)“重複を除いた形”でデータの個数を調べる(購入者数)
(2)“1回だけ登場するデータ”の個数を調べる(1回だけ購入した人の数)
(3)それぞれのデータ数をもとに(1)-(2)の計算を行う

  • 「重複があるデータ」を調べる数式

  • 複数回購入した人の数

このような計算を行うことで、「何回も買い物をしてくれたユーザー」の人数を調べることが可能だ。関数UNIQUEに「何回も重複して登場するデータ」だけを取得する機能があれば便利なのだが、残念ながら、そのような機能は用意されていないようだ。

列方向にデータを検索していく場合

最後に、第2引数にTRUEを指定したときの挙動について解説していこう。この場合は、横方向へデータが検索されるようになる。

簡単な例を示しておこう。以下の図は、ある地域で開催された高校対抗の団体戦の結果をまとめたものだ。団体戦は全部で8回開催され、各大会における順位が高校名で記されている。

  • 過去の順位を記録した表

この表をもとに「優勝経験がある高校」を調べてみよう。このような場合は、関数UNIQUEの第2引数にTRUEを指定し、横方向にデータを検索していくとよい。

  • 関数UNIQUEの入力

結果は以下の図の通り。過去に優勝した経験があるのは「楓花学園」と「翔丘」の2校であることを確認できる。第2引数をTRUEにした場合、その結果は横方向に溢れるスピルとして表示される。データ数が少ないため、関数COUNTAを使用しなくても「2校」であることを一目で確認できるだろう。

  • 過去に優勝を経験したことがある高校

この関数UNIQUEをオートフィルでコピーすると、第1引数のセル範囲が自動補正されていくため、「2位」や「3位」の経験がある高校をリスト化できる。

  • 関数UNIQUEをオートフィルでコピー

  • 各順位の経験校

この結果を見ると、「2位」の経験があるのは4校、「3位」の経験があるのは6校ある、ということを確認できる。このようにデータを横方向に検索したいときは、第2引数にTRUEを指定すればよい。

今回の連載で紹介したように、関数UNIQUEを使うと“重複を除いた一意のデータ”をリスト化することが可能となる。さらに、複数の列を対象にリストを作成することも可能となっている。これについては次回の連載で詳しく解説していくとしよう。