目次
このチュートリアルでは、UNIQUE関数と動的配列を使用して、Excelで一意の値を取得する方法について見ていきます。 列や行、複数の列、条件に基づいて、一意の値を見つけるための簡単な数式を学びます。
以前のバージョンのExcelでは、ユニークな値のリストを抽出するのは難しい課題でした。 一度だけ出現するユニックを見つける方法、リスト内のすべての異なる項目を抽出する方法、空白を無視する方法などを紹介する特別記事を用意しました。 それぞれの課題は、いくつかの関数と複数行の配列式を組み合わせて使用する必要があり、Excelの達人だけが完全に理解することができるものです。
Excel 365のUNIQUE関数の導入ですべてが変わりました!これまでロケットサイエンスだったことが、ABCのように簡単になりました。 数式のエキスパートでなくても、1つまたは複数の条件に基づいて範囲から一意の値を取得し、結果をアルファベット順に並べることができます。 すべて、誰でも読める簡単な数式で行われるので、自分のニーズに応じて調整することが可能です。
エクセルUNIQUE関数
ExcelのUNIQUE関数は、範囲または配列から一意な値のリストを返します。 テキスト、数値、日付、時間など、あらゆるデータ型に対応しています。
この関数は動的配列関数に分類され、隣接するセルに自動的に縦または横に広がる動的配列が得られます。
ExcelのUNIQUE関数の構文は以下の通りです。
UNIQUE(array, [by_col], [exactly_once])どこで
アレイ (必須) - 一意な値を返すための範囲または配列。
By_col (オプション) - データを比較する方法を示す論理値。
- TRUE - 列間のデータを比較します。
- FALSE または省略(デフォルト) - 行をまたいでデータを比較します。
イグザクトリー・オンス (オプション) - どのような値が一意であるとみなされるかを定義する論理値。
- TRUE - 一度だけ現れる値を返します。これは、データベースの一意性の概念です。
- FALSE または省略(デフォルト) - 範囲または配列内のすべての異なる(異なる)値を返します。
注)現在、UNIQUE関数は、Excel for Microsoft 365およびExcel 2021でのみ使用できます。 Excel 2019、2016以前のバージョンは動的配列式に対応していないため、UNIQUE関数はこれらのバージョンでは使用できません。
Excelの基本的なUNIQUE式
以下は、最もシンプルな形のExcelの固有値の計算式です。
目標は、範囲B2:B10からユニークな名前のリストを抽出することです。 そのために、D2に次の数式を入力します。
=unique(b2:b10)
2番目と3番目の引数が省略されているのは、デフォルトが今回のケースで完全に機能するためです。
Enterキーを押して数式を完成させると、Excelは最初に見つかった名前をD2に出力し、他の名前を下のセルにこぼします。 その結果、1つの列にすべてのユニークな値が揃うことになります。
B2からI2までの列をまたぐデータの場合、第2引数にTRUEを設定すると、列同士の比較ができます。
=unique(b2:i2,true)です。
B4 に上記の数式を入力して Enter キーを押すと、結果が右側のセルに水平にこぼれます。 こうして、一意の値を一列に並べることができます。
ヒント:複数列の配列から一意な値を見つけ、1列または1行で返すには、以下の例に示すように、TOCOLまたはTOROW関数と一緒にUNIQUEを使用します。
- 複数列の範囲から一意な値を列に抽出する
- 複数列の範囲から一意な値を行に取り込む
Excel UNIQUE関数 - ヒントと注意点
UNIQUEは新しい関数で、他の動的配列関数と同様に、注意すべきいくつかの特異性があります。
- UNIQUE が返す配列が最終結果である場合(つまり,他の関数に渡されない場合),Excel は適切な大きさの範囲を動的に作成し,そこに結果を入力します. この数式を入力する必要があるのは,以下の箇所だけです. 一房 数式を入力するセルの下または右に十分な空きセルを確保することが重要です。そうしないと、#SPILLエラーが発生します。
- 結果 自動更新 を変更しない限り、参照する配列の外側に追加された新しい項目は計算式に含まれません。 勢揃い を参照する必要があります。 勢揃い を使用して、ソース範囲のサイズ変更に自動的に対応し、その後、範囲をExcelのテーブルに変換して構造化された参照を使用するか、または動的な名前付き範囲を作成します。
- 異なるExcelファイル間の動的配列は、以下の場合にのみ機能します。 両方のワークブックが開いている リンク元のワークブックが閉じている場合、リンクされたUNIQUE式は#REF!エラーを返します。
- 他の動的配列関数と同様、UNIQUE は通常の配列の中でしか使用できません。 レンジ Excelのテーブル内に置くと、#SPILL!エラーを返します。
Excelでユニークな値を見つける方法 - 数式の例
UNIQUE関数は、ユニークな値を抽出したり、重複した値を削除したりすることができる関数で、次のような使い方ができます。
一度しか発生しないユニークな値を抽出する
指定された範囲に一度だけ現れる値のリストを得るには、UNIQUE の第3引数を TRUE に設定する。
例えば、当選者名簿に載っている名前を1回だけ抜き出すには、次のような式を使います。
=unique(b2:b10,,true)です。
ここで、B2:B10はソース範囲、第2引数( バイコル ) は FALSE か、データが行で構成されているため省略されます。
複数回出現する明確な値の検索
もし、逆の目的、つまり、与えられた範囲内に複数回現れる値のリストを得たい場合は、UNIQUE関数とFILTER、COUNTIFを一緒に使います。
UNIQUE(FILTER()の場合 レンジ , COUNTIF( レンジ , レンジ )>1))です。例えば、B2:B10に複数回出現する異なる名前を抽出するには、次の式を使用します。
=UNIQUE(FILTER(B2:B10, COUNTIF(B2:B10, B2:B10)>1))
この処方の仕組み
FILTER関数は、COUNTIF関数で返される出現回数に基づいて、重複する項目をフィルタリングします。 今回の場合、COUNTIFの結果はこのような回数の配列です。
{4;1;3;4;4;1;3;4;3}
比較演算(>1)は、上記の配列をTRUEとFALSEの値に変更し、TRUEは複数回出現する項目を表します。
{true;false;true;true;false;true;true} です。
この配列がFILTERに渡されるのは 含む 引数で、結果の配列にどの値を含めるかを指定します。
{"Andrew"; "David"; "Andrew"; "David"; "Andrew"; "David"; "Andrew"; "David" }.
お気づきのように、TRUEに対応する値だけが生き残ります。
上記の配列は 勢揃い の引数にUNIQUEを指定し、重複を排除した上で最終結果を出力しています。
{"アンドリュー"; "デビッド"}。
ヒント:同様の方法で、2回以上(>2)、3回以上(>3)など、ユニークな値をフィルタリングすることができます。
複数列のユニーク値(ユニークロー)を探す
複数のカラムを比較し、一意な値を返したい場合は、比較対象のカラムをすべて 勢揃い の議論になります。
例えば、当選者のユニークなFirst name(A列)とLast name(B列)を返すには、E2に次の式を入力する。
=unique(a2:b10)
Enterキーを押すと、次のような結果が得られます。
を得るために いちげんてき つまり、A,B,C列の値の組み合わせが一意である項目は、この数式を使用することになります。
=unique(a2:c10)
驚くほどシンプルですね(笑)
アルファベット順に並べた一意の値のリストを取得する
Excelでアルファベットの並び替えをするとき、どのように行いますか? Excelに組み込まれている並べ替えやフィルター機能を使います。 しかし、ワークシートが変わるたびに自動的に再計算されるExcelの数式とは異なり、機能を手動で再適用しなければならないため、ソースデータが変わるたびに並び替えをしなければならないのが問題です。
動的配列関数の導入で、この問題は解消されました!必要なのは、SORT関数を通常のUNIQUE式の周りに、次のように変形させるだけです。
SORT(UNIQUE(配列))例えば、A列からC列の一意な値を抽出し、その結果をAからZまで並べるには、次の式を使用します。
=sort(unique(a2:c10))
例えば、AndrewとDavidが2つの異なるスポーツで優勝していることが明確にわかります。
ヒント:この例では、1列目の値をAからZにソートしています。 これらは、SORT関数のデフォルトであり、したがって、オプションの ソートインデックス と ソート順 もし、他の列や別の順序(ZからAや大きい順)でソートしたい場合は、SORT関数のチュートリアルで説明したように、第2と第3の引数を設定してください。
複数の列から一意な値を見つけ、1つのセルに連結する
複数の列で検索する場合、ExcelのUNIQUE関数はデフォルトで各値を別々のセルに出力します。 もしかしたら、1つのセルに結果がある方が便利かもしれませんね。
そのためには、範囲全体を参照するのではなく、アンパサンド(&)を使用して列を連結し、その間に目的のデリミタを入れます。
例として、A2:A10 の姓と B2:B10 の名をスペース文字 (" ") で区切って連結しています。
=UNIQUE(A2:A10&" "&B2:B10)
その結果、1つの列にフルネームのリストができました。
基準に基づいてユニークな値のリストを取得する
条件付きでユニークな値を抽出するには、ExcelのUNIQUE関数とFILTER関数を併用します。
- FILTER機能は、条件を満たす値のみにデータを限定するものです。
- UNIQUE関数は、フィルタリングされたリストから重複を除去する。
以下は、フィルタリングされたユニークな値の計算式の一般的なバージョンです。
UNIQUE(FILTER(array, クライテリア・レンジ = クライテリア ))今回は、あるスポーツの優勝者一覧を取得する例です。 まず、セル(F1)にスポーツを入力します。 そして、以下の数式でユニークネームを取得します。
=unique(filter(a2:b10, c2:c10=f1))
ここで、A2:B10はユニークな値を検索する範囲、C2:C10は条件を確認する範囲です。
複数の条件に基づくユニークな値のフィルタリング
一意な値を2つ以上の条件でフィルタリングするには、以下のような式でFILTER関数に必要な条件を構成します。
UNIQUE(FILTER(配列、( criteria_range1 = クライテリア1 ) * ( criteria_range2 = クライテリア2 )))計算式の結果は、指定した条件がすべて「TRUE」である一意の項目のリストです。 Excelの用語では、これをAND論理と呼びます。
この計算式を実際に見るために、G1(基準1)でその競技、G2(基準2)でその年齢以下のユニークな勝者のリストを取得してみよう。
ソース範囲をA2:B10、スポーツ範囲をC2:C10 (criteria_range 1)、年齢をD2:D10 (criteria_range 2) とすると、数式は以下のような形になります。
=unique(filter(a2:b10, (c2:c10=g1) * (d2:d10))
そして、まさに私たちが求めている結果を返してくれるのです。
この処方の仕組み
ここでは、この式のロジックをハイレベルで説明する。
での 含む FILTER関数の引数で、2つ以上の範囲と基準のペアを指定します。 各論理式の結果は、TRUEとFALSEの値の配列です。 配列の乗算は、論理値を数値に強制して1と0の配列を生成します。ゼロを掛けると常にゼロになるので、すべての条件を満たす項目だけが最終的に配列に1を持ちます。 FILTER関数は、0に対応する項目をフィルタリングし、結果をUNIQUEに渡す。
詳しくは、「ANDロジックを使用した複数条件でのFILTER」をご覧ください。
複数のOR条件による一意な値のフィルタリング
複数のOR条件、すなわち、この条件またはあの条件がTRUEであるときに一意の値のリストを得るには、論理式を乗算するのではなく、加算します。
UNIQUE(FILTER(配列、( criteria_range1 = クライテリア1 ) + ( criteria_range2 = クライテリア2 )))例えば、どちらかの勝者を表示する場合 サッカー または ホッケー は、この式を使うことができます。
=UNIQUE(FILTER(A2:B10, (C2:C10="Soccer") + (C2:C10="Hockey")))である。
もちろん、必要であれば、以下のように別のセルに条件を入力し、そのセルを参照することも可能です。
=unique(filter(a2:b10, (c2:c10=g1) + (c2:c10=g2)))である。
この処方の仕組み
複数のAND条件をテストするときと同じように、複数の論理式を 含む これらの配列を足し合わせると、1つ以上の条件がTRUEである項目は1、すべての条件がFALSEである項目は0となります。 その結果、いずれかの条件を満たす項目はUNIQUEに渡される配列に入ります。
詳しくは、「ORロジックを使った複数条件でのFILTER」をご覧ください。
Excelで空白を無視して一意な値を取得する
データセットに隙間がある場合、通常の数式で得られるユニークリストには、空のセルやゼロの値が含まれる可能性があります。 これは、ExcelのUNIQUE関数が、空白を含む範囲内のすべての異なる値を返すように設計されているためです。 つまり、ソース範囲にゼロと空白セルの両方がある場合、ユニークリストには二つのゼロ、一つは空白を表します。また、ソースデータに数式で返される空文字列が含まれている場合、uiqueリストには空文字列("")も含まれ、見た目は空白のセルに見える。
空白を含まない一意の値のリストを得るには、次のようにします。
- FILTER機能で空白セルや空文字列をフィルタリングする。
- UNIQUE関数を使用して、結果を一意な値のみに制限することができます。
一般的な形では、次のような式になります。
UNIQUE(FILTER()の場合 レンジ , レンジ ""))この例では、D2の式がそうである。
=unique(filter(b2:b12, b2:b12""))
その結果、Excelは空のセルを含まない一意の名前のリストを返します。
注)元データに ゼロズ の場合、一意のリストにゼロの値が1つ含まれることになります。
特定の列でユニークな値を検索する
時には、互いに隣接していない2つ以上の列から一意な値を抽出したい場合があります。 また、結果として得られるリストの列を並べ替えたい場合もあります。 両方のタスクは、CHOOSE関数の助けを借りて実現することが可能です。
unique(choose({1,2,...}, レンジ1 , レンジ2 ))このサンプルテーブルから、A列とC列の値に基づいて勝者のリストを取得し、結果をこの順序で並べたいとします。 これを実現するために、次の式を作成します。
=unique(choose({1,2}, c2:c10, a2:a10))
そして、次のような結果を得る。
この処方の仕組み
CHOOSE関数は、指定された列の値を2次元配列で返します。 この場合、列の順番も入れ替えます。
{バスケットボール」、「アンドリュー」、「ベティ」、「バレーボール」、「デビッド」、「バスケットボール」、「アンドリュー」、「ホッケー」、「サッカー」、「ロバート」、「バレーボール」、「デビッド」、「ホッケー」、「アンドリュー」、「バスケットボール」、「デビッド」}。
上記の配列から、UNIQUE関数は一意なレコードのリストを返します。
ユニークな値の検索とエラー処理
このチュートリアルで説明したUNIQUE式は、指定した条件を満たす値が少なくとも1つあれば、完璧に動作します。 式が何も見つからなかった場合、#CALC!エラーが発生します。
これを防ぐには、数式をIFERROR関数で囲むだけでよいのです。
例えば、条件を満たすユニークな値が見つからない場合、何も表示しない、つまり空文字列("")を表示することができます。
=ferror(unique(filter(a2:b10, (c2:c10=g1) * (d2:d10)
あるいは、結果が見つからなかったことをユーザーに明確に伝えることもできます。
=ferror(unique(filter(a2:b10, (c2:c10=g1) * (d2:d10)
ExcelのUNIQUE関数が機能しない
UNIQUE関数の登場により、Excelでユニークな値を見つけることが驚くほど簡単になりました。 突然、あなたの数式がエラーになる場合、それは次のいずれかの可能性が高いです。
#NAME?エラー
この関数がサポートされていないバージョンのExcelでUNIQUE式を使用した場合に発生します。
現在、UNIQUE関数はExcel 365と2021でのみ使用できます。 異なるバージョンをお持ちの場合は、このチュートリアルで適切な解決策が見つかるかもしれません:Excel 2019、Excel 2016およびそれ以前のバージョンで一意の値を取得する方法。
サポートされているバージョンの#NAME?エラーは、関数名のスペルが間違っていることを示します。
#SPILLエラー
スピルレンジの1つ以上のセルが完全に空白でない場合に発生します。
エラーを修正するには、空でないセルを消去または削除すればよい。 どのセルが邪魔になっているかを正確に知るには、エラーインジケーターをクリックしてから 障害となる細胞を選択する 詳しくは、「#SPILL! Excelでエラー - 原因と対処法」をご覧ください。
以上、エクセルでユニークな値を見つける方法でした。 読んでくださってありがとうございました!また来週のブログでお会いしましょう。
練習用ワークブック(ダウンロード
Excelのユニークな値の計算式の例(.xlsxファイル)