一覧から固有の値を抽出するExcelの数式
さて、データ分析の初期の頃、重複を毎回削除するのではなく、Excelの一意のアイテムをリストから自動的に取得する必要がありました。そして、私はそれを行う方法を考え出しました。その後、私のExcelダッシュボードは以前よりもさらにダイナミックになりました。では、どうすればそれができるか見てみましょう…
リストから一意の値のリストを抽出するには、 link:/ lookup-formulas-excel-index-function [INDEX]
、 link:/ lookup-formulas-excel-match-function [MATCH]
||を使用します。 |||および link:/ Tips-countif-in-microsoft-excel [COUNTIF]
。
また、 `link:/ logical-formulas-excel-iferror-function [IFERROR]`を使用して、結果をクリーンにします。これはオプションです。
はい、それは配列数式になります…それではそれを成し遂げましょう…===== Excelで一意の値を抽出するための一般的な数式
Ref_list:一意の値を抽出するリスト link:/ excel-range-name-expanding-references-in-excel [Expanding_output_range:]
{=INDEX(ref_list,MATCH(0,COUNTIF(expanding_output_range,ref_list),0))}
今、これは非常に重要です。これは、抽出したリストを表示する範囲です。この範囲には、リストに含まれていない明確な見出しが必要であり、数式は見出しの下になります(見出しがE1にある場合、数式はE2にあります)。展開とは、数式を下にドラッグすると、出力範囲全体に展開されることを意味します。そのためには、見出しを$ E $ 1:E1として参照する必要があります(私の見出しはE1にあります)。下にドラッグすると拡大します。 E2では、$ E $ 1:E1になります。 E3では、$ E $ 1:E2になります。 E2では、$ E $ 1:E3などになります。
次に例を見てみましょう。それはそれを明らかにするでしょう。
一意の値の抽出Excelの例ここでは、A2:A16の範囲の列Aにこの顧客のリストがあります。
E列では、顧客からのみ一意の値を取得したいと思います。これで、この範囲A2:A16も増加する可能性があるため、リストが増加するたびに、数式でリストから新しい顧客名をフェッチする必要があります。
では、列Aから一意の値を取得するには、この数式をセルE2に書き込み、CTRL + SHIFT + ENTERを押して配列数式にします。
A $ 2:A16:リストが拡張され、抽出したい新しい一意の値が含まれる可能性があると思います。そのため、A16の絶対的な参照ではなく、下から開いたままにしました。以下の式をコピーするたびに拡張できます。
{=INDEX($A$2:A16,MATCH(0,COUNTIF($E$1:E1,$A$2:A16),0))}
したがって、 `link:/ lookup-formulas-retrieveing-matching-values-from-not-adjacent-list [INDEX andMATCH関数のしくみ]`がわかります。ここでの主要な部分は次のとおりです:
COUNTIF($ E $ 1:E1、$ A $ 2:A16):この数式は、1と0の配列を返します。範囲$ E $ 1:E1の値が基準リスト$ A $ 2:A16で見つかると、値は範囲$ A $ 2:A16の位置で1に変換されます。
ここでMATCH関数を使用して、値0を探しています。Matchは、COUNTIF関数によって返される配列で見つかった最初の0の位置を返します。 Than INDEXは、A $ 2:A16を調べて、MATCH関数によって返されたインデックスで見つかった値を返します。
把握するのは少し難しいかもしれませんが、それは機能します。リストの最後にある0は、一意の値がこれ以上ないことを示します。最後に0が表示されない場合は、下のセルに数式をコピーする必要があります。
これで、#NAを回避するために、ExcelのIFERROR関数を使用できます。
そうですね、この式を使用して、リストから一意の値を取得できます。サブスクリプションOffice365を使用したExcel2019では、MicrosoftはUNIQUEという名前の機能を提供しています。引数として範囲を取り、一意の値の配列を返すだけです。 Microsoft Excel2016の1回限りの購入では利用できません。
{=IFERROR(INDEX($A$2:A16,MATCH(0,COUNTIF($E$1:$E1,$A$2:A16),0)),"")}