UNIQUE関数について
UNIQUE関数は2020年4月22日から、Office365で使えるようになった関数です。(買い切り版ではExcel2021以降で使用可能です。)
重複のあるリストから重複のないリストを作成できるということで、すぐにその利便性が知れ渡りました。
これは革新的なExcel関数のひとつで、覚えておいて損はありません。
また、この数式は通称スピル関数と呼ばれるもので、たった1つのセルに数式を入力すれば、自動的に必要範囲へ数式が設定されます。
配列関数と少し似ていますが、これまでのExcelにはない種類の関数です。
構成
UNIQUE関数の正式な説明では次のような構成が示されています。
=UNIQUE(配列,[列の比較],[回数指定])
ちょっとわかりにくいですよね。
追々説明しますので、とりあえず一旦忘れましょう。
基本的な使い方
基本的な使い方としては極めて簡単で、リストの範囲を入れてやるだけです。
=UNIQUE(リストの範囲)
具体例はこんな感じです。
=UNIQUE(A2:A20)
たったこれだけで次のような重複のないリストが作成できます。
これまで作業列を使ったり、クセの強い配列数式で作成していたリストが、これほど簡単に作成できるのは革新的です。
ただ、この方法だとリストに「0」が表示されてしまうことがあります。
「0」を表示しない方法は後ほど説明します。
もう少し詳しい使い方
UNIQUE関数には、リストの範囲を指定する第一引数のほかに、第二引数、第三引数も指定できます。
それぞれ何を意味するのか、簡単に書くと次のとおりです。表現は公式のものとは少し変えていますのでご了承ください。
引数 | 意味 | 指定方法 |
---|---|---|
第一引数 (必須) | リストの範囲 | セル範囲 (例)A2:A20 |
第二引数 (省略可)※ | (検索方向) 縦方向 or 横方向 | 縦方向:FALSE(省略時) 横方向:TRUE |
第三引数 (省略可)※ | (出現回数) 回数無視 or 1回のみ | 回数無視:FALSE(省略時) 1回のみ:TRUE |
※ 第二引数、第三引数とも「省略=FALSE(既定値)」となります。
それぞれ、もう少し補足していきます。
第一引数(リストの範囲)
ここは単純にリストの範囲を指定するだけです。
具体的な書き方は最初に示したので省略しますが、複数列(複数行)の指定もできます。
第二引数(検索方向)
検索方向と言ってもわかりにくいので、次の表を見てください。
このように第二引数に「TRUE」を指定すると、横向きのリストが作成できます。
この場合は、当然ながら第一引数(リストの範囲)には横方向のリスト(セル範囲)を指定する必要がある点に注意してください。
なお、上に記載したとおり、第二引数の省略は「FALSE」扱いになります。
(参考)「=UNIQUE(A2:A20)」と「=UNIQUE(A2:A20,FALSE,FALSE)」は同じ意味です。
第三引数(出現回数)
こちらもまずは表をご覧ください。
もちろん、縦向きリストでも使用できます。
このように、第三引数に「TRUE」を指定した場合、指定範囲内に元々1つしかないデータだけのリストを作成します。
もう言うまでもないと思いますが、第三引数を指定しなかった場合は「FALSE」扱いとなり、通常どおり指定範囲の全データを対象に重複を取り除いたリストが作成されます。
応用編(他の関数との組み合わせ)
FILTER関数を組み合わせて0を表示しないようにする
わかりにくい表現になってしまいますが、正しくは「第一引数の指定範囲に空白セルが存在しても0を表示させない方法」ですね。
恐らく、UNIQUE関数を使う上で、この方法が一番求められているのではないかと想像しています。
「0」はFILTER関数を組み合わせて、次のように記載すれば簡単に解決できます。
=UNIQUE(FILTER(リスト範囲,リスト範囲<>””))
具体的例はこんな感じです。
=UNIQUE(FILTER(A2:A20,A2:A20<>””))
数式は少し長くなりますが、1列だけの指定であれば至って単純。
上の数式のセル範囲だけ適切に修正するだけです。
ちなみに、指定範囲内に空白セルがなければ余計な「0」は表示されません。
(参考)FILTER関数は、UNIQUE関数と同じスピル関数仲間で、フィルターと同様のデータ抽出が関数で実現できるものです。
SORT関数と組み合わせてリストを並び替える
ここではSORT関数を組み合わせた使用例を2つ紹介します。
1列の縦向きリストで昇順のリストを作成
記載方法は次のとおりで、昇順で並び替えるなら単純にUNIQUE関数をSORT関数で包むだけです。
=SORT(UNIQUE(A2:A20))
=SORT(UNIQUE(FILTER(A2:A20,A2:A20<>””)))
FILTER関数も組み合わせて「0」を省けます。実務ではやはり後者のほうが良いですね。
2列の縦向きリストで降順のリストを作成
記載方法は次のとおりで、考え方は先ほどと同じようにUNIQUE関数をSORT関数で包みます。
=SORT(UNIQUE(FILTER(A2:B20,B2:B20<>””)),2,-1)
しかし、こちらは少し注意点があります。
まずはFILTER関数の中の範囲指定です。
最初に指定する「A2:B20」はフィルターをかける範囲なので、A列もB列も範囲に入れます。
その後に指定している「B2:B20<>””」は、フィルター条件として「空白セルを除く」というものです。
フィルター条件は列単位でなければ指定できませんから、こちらは単列指定の「B2:B20<>””」となっているわけです。
もちろん、この表の場合は「A2:A20<>””」としても結果は同じです。
ようは「A2:B20<>””」のように複数列を指定してはいけないということです。
次に2点目、SORT関数の第二、第三引数です。
この表の場合、ソートキーはコード(数字)で判定しようとしているため、範囲の2列目という意味で「2」を指定しています。
第二引数を省略すると、1列目での判定となります。
また、第三引数には並び替えの順序となり、「1」が昇順、「-1」が降順です。
この表の場合、順序は「降順」なので、「-1」を指定しています。
第三引数を省略すると、昇順になります。
まとめ
今回は重複のないリストが簡単に作成できる「UNIQUE関数」について、「これだけ覚えておけば割と対応できるかな」という使い方を紹介しました。
もちろん、実務ではさらに複雑な使い方が必要となることもあると思います。
ただ、それはUNIQUE関数の使い方と言うより、FILTER関数やSORT関数など、組み合わせる別の関数の使い方に依存する部分が大きいのです。
そのため、FILTER関数やSORT関数などについても、さらに理解を深めておくことをおすすめします。
以上、ありがとうございました。
コメント