Microsoft 365 の Excel で利用できる UNIQUE 関数について紹介します。
(UNIQUE 関数は Excel 2016 や Excel 2019 では利用できないのでご注意を)
たとえば、下図の「出荷履歴」テーブルの [商品名] 列には、「フルーツヨーグルトアイス」のセルが 2 つあるので重複しているといえます。
セル E2 に数式を作成し、赤枠の場所のように [商品名] 列のデータを 1 つずつ表示します。
UNIQUE 関数はスピルありきの関数なので、スピルって?という方は こちら を参照してください。
また、引数の指定によって、元データの中に 1 回しか出現しないデータを表示することもできます。
セル G2 に数式を作成し、緑枠の場所のように [商品名] 列のデータのうち、1 回しか出現しないデータを表示します。
UNIQUE 関数について
UNIQUE 関数は、セル範囲や配列のデータのうち、一意 (重複しない) データを返す関数です。
UNIQUE 関数の構文です。ヘルプの記載とは表現を変えてあります。
=UNIQUE(対象データの範囲 , [方向], [出現回数])
対象データの範囲 (必須):対象としたいデータが含まれる範囲、または配列を指定します。
[方向] (省略可能):対象としたいデータが縦方向に伸びる「行」に配置されている場合は FALSE を、データが横方向に伸びる「列」に配置されている場合は TRUE を指定します。省略した場合は FALSE が指定されたとみなされます。
[出現回数] (省略可能):範囲に 1 回しか出現していないデータを対象とする場合は TRUEを指定します。重複を除いて 1 つずつ表示する場合は FALSE を指定します。省略した場合は FALSE を指定したとみなされます。
出現回数の制限をしない場合 (1 つずつ全部表示)
下図の [商品名] 列のデータ部分を対象データの範囲とし、データが重複しないように 1 つずつ表示します。
対象としたいデータが縦方向に伸びる「行」に配置されているので、[方向] は省略して FALSE とし、1 回しか出現しないという制限はしないため [出現回数] も省略して FALSE とします。
よってセル E2 に作成している数式は、
=UNIQUE(出荷履歴[商品名])
です。
1 回しか出現していないデータを表示
下図の [商品名] 列のデータ部分を対象データの範囲とし、1 回しか出現していないデータを表示します。
対象としたいデータが縦方向に伸びる「行」に配置されているので (省略しようと思ったけど一応指定して) FALSE とし、1 回しか出現していないデータとしたいので、[出現回数] は TRUE とします。(この最後の TRUE がポイント)
よってセル G2 に作成している数式は、
=UNIQUE(出荷履歴[商品名] , FALSE , TRUE)
です。
おまけ
下図では、こちら で紹介している SORT 関数と組み合わせて、重複しないデータを昇順で並べ替えるように数式を編集しています。「アイスキャラメルバー」が先頭に表示されていることがわかります。
=SORT(UNIQUE(出荷履歴[商品名]))
複数の列を対象データの範囲とする場合
下図では、[商品名] 列と [数量] 列を対象データの範囲とする UNIQUE の数式を作成しています。
数式の結果をよく見ると、「フルーツヨーグルトアイス」は 2 つあるのに対し、(元データに 3 回出現している) 「キャラメルスコーン」は 1 つしか表示されていません。
当たり前ですが、2 つの列を対象データ範囲として指定しているので、2 つの列の値の組み合わせが一致していないとユニーク データとみなされない、ということですね。
「フルーツヨーグルトアイス」「130」 と、
「フルーツヨーグルトアイス」「120」 は、
一致しない (重複しない) 1 つのデータ、ということです。どうしても左側の商品名のことを中心に考えてしまいがちですが、ピボットテーブルじゃないので、勝手に合計はしてくれませんのでご注意を。
複数の列を対象データとした場合のイメージ図をもう 1 つ。
先ほどと同じ話ですが、数字だとわかりにくいかな、と思って [都道府県] と [市区町村] の組み合わせで作ってみました。
都道府県+市区町村が、1 つずつ表示されています。
元になるデータ (今回でいうところのテーブル) に対する変化に動的に対応したユニーク データを表示したい、ということなのであれば UNIQUE 関数がよいと思います。なんといってもスピルが機能するのでデータの増減に対応しやすいです。
また、ほかの関数と組み合わせて使うことが多いと思います。たとえば、FILTER 関数で抽出した結果のうち、重複しないデータに絞って表示するとか、SORT 関数と組み合わせて並べ替えるとか。
なんだかどんどん新しいことができるようになりますね。Excel の使い方が大きく変わるのかもしれません。
石田 かのこ