Excel で一意の値を数える 7 つの方法
各値が複数回入力される値のリストがあるとします。
そしていま…
このリスト内の実際の値の数を取得するために、このリスト内の固有の値を数えたいとします。
これを行うには、値を 1 回だけカウントし、リスト内の他のすべての出現を無視するメソッドを使用する必要があります。
Excel では、さまざまな方法を使用して、多数の一意の値を取得できます。どのようなタイプの値を持っているかに応じて、これに最適な方法を使用できます。
今日の記事では、一意の値をカウントする 6 つの方法を共有し、値の種類に応じてこれらの方法を使用したいと思います。
一意の値の数を取得する高度なフィルター
高度なフィルターを使用することは、一意の値の数を確認する最も簡単な方法の 1 つであり、複雑な数式も必要ありません。ここには名前のリストがあり、このリストから一意の名前の数を数える必要があります。
一意の値を取得する手順は次のとおりです。
- まず、リスト内のセルの 1 つを選択します。
- その後、 [データ] タブ ➜ [並べ替えとフィルター] ➜ [詳細設定] をクリックします。
- クリックすると、高度なフィルターを適用するためのポップアップ ウィンドウが表示されます。
- このウィンドウから「別の場所にコピー」を選択します。
- 「コピー先」で、一意の値を貼り付ける空のセルを選択します。
- ここで、「単一レコードのみ」ボックスにチェックを入れて、「OK」をクリックします。
- この時点で、一意の値のリストが完成しました。
- 次に、リストの最後のセルの下のセルに移動し、次の数式を挿入してEnter キーを押します。
=COUNTA(B2:B10)
この名前のリスト内の一意の値の数を返します。
これで、一意の値のリストが作成され、それらをカウントすることもできます。この方法はシンプルで、複雑な数式を記述する必要がないため、簡単に実行できます。
SUM と COUNTIF を組み合わせて一意の値をカウントする
別のリストを抽出せずに、単一セル内の固有の値の数を調べたい場合は、SUM と COUNTIF を組み合わせて使用できます。
このメソッドでは、値のリストを参照するだけで、数式が一意の値の数を返します。配列数式なので表として入力する必要があり、入力する際はCtrl+Shift+Enterを使用します。
そして、式は次のとおりです。
=SUM(1/COUNTIF(A2:A17,A2:A17))
この式を表形式で入力すると次のようになります。
{=SUM(1/COUNTIF(A2:A17,A2:A17))}
使い方
この式を理解するには、それを 3 つの部分に分解する必要があります。そして、この式を表形式で入力し、このリストには一意ではなく合計 16 個の値があることを覚えておいてください。
さて、見てください。
最初の部分では、COUNIF を使用して 16 から始まる各値の数を数えましたが、ここで COUNTIF は以下のような値を返します。
2 番目の部分では、すべての値を 1 で割ると、次のような値が返されます。
リスト内に値が 2 回存在する場合は両方の値に対して 0.5 が返されるため、最後に合計すると 1 になり、値が 3 回存在する場合はそれぞれ 0.333 を返すとします。
そして、 3 番目の部分では、SUM 関数を使用してこれらすべての値を合計するだけで、多数の一意の値が得られます。
この数式は非常に強力で、単一セル内の数を取得するのに役立ちます。
SUMPRODUCT + COUNTIF を使用してリストから一意の値の数を取得します
最後の方法では、SUM メソッドと COUNTIF メソッドを使用しました。ただし、SUM の代わりに SUMPRODUCT を使用することもできます。
また、 SUMPRODUCTを使用する場合は、表形式で数式を入力する必要はありません。セルを編集して以下の数式を入力するだけです。
=SUMPRODUCT(1/COUNTIF(A2:A17,A2:A17))
この式を表形式で入力すると次のようになります。
{=SUMPRODUCT(1/COUNTIF(A2:A17,A2:A17))}
使い方
この数式は、上記の方法で学習したのとまったく同じように機能します。違いは、SUM の代わりに SUMPRODUCT を使用したことだけです。
また、SUMPRODUCT は Ctrl+Shift+Enter を使用せずに配列を取得できます。
リストから一意のテキスト値のみをカウントします
ここで、携帯電話番号も含まれる名前のリストがあり、テキスト値のみから一意の値をカウントしたいとします。したがって、この場合、次の式を使用できます。
=SUM(IF(ISTEXT(A2:A17),1/COUNTIF(A2:A17, A2:A17),””))
そして、この式を表形式で入力すると。
{=SUM(IF(ISTEXT(A2:A17),1/COUNTIF(A2:A17, A2:A17),””))}
使い方
この方法では、IF 関数と ISTEXT 関数を使用しました。 ISTEXT は、最初にすべての値がテキストであるかどうかを確認し、値がテキストである場合は TRUE を返します。
その後、IF は、TRUE があり、他の値が空のままであるすべてのテキスト値に COUNTIF を適用します。
そして最後に、SUM はテキストであるすべての一意の値の合計を返すため、一意のテキスト値の数が得られます。
リストから一意の番号の数を取得します
値のリストから一意の数値を数えたいだけの場合は、以下の式を使用できます。
=SUM(IF(ISNUMBER(A2:A17),1/COUNTIF(A2:A17, A2:A17),””))
この式を表形式で入力します。
{=SUM(IF(ISNUMBER(A2:A17),1/COUNTIF(A2:A17, A2:A17),””))}
使い方
この方法では、IF 関数と ISNUM 関数を使用しました。 ISNUMBER は、最初にすべての値が数値かどうかを確認し、値が数値の場合は TRUE を返します。
その後、IF は、TRUE があり、他の値が空のままであるすべての数値に COUNTIF を適用します。
そして最後に、SUM は数値であるすべての一意の値の合計を返すため、一意の数値の数が得られます。
UDFで一意の値をカウントする
ここでは、数式を使用せずに一意の値を数えるのに役立つVBA (UDF)を紹介します。
Function CountUnique(ListRange As Range) As Integer Dim CellValue As Variant Dim UniqueValues As New Collection Application.Volatile On Error Resume Next For Each CellValue In ListRange UniqueValues.Add CellValue, CStr(CellValue) ' add the unique item Next CountUnique = UniqueValues.Count End Function
新しいモジュールを挿入してこの関数を VBE に入力し、スプレッドシートに移動して次の数式を挿入します。
=CountUnique(range)
Excelファイルを取得する
結論
一意の値をカウントすると、大規模なデータ セットを扱うときに役立ちます。
ここで使用した名前のリストには重複した名前があり、一意の数を計算した結果、リストには 10 個の一意の名前があることがわかりました。
さて、ここで学んだすべての方法はさまざまな状況で役立ち、自分にぴったりだと思う方法をどれでも使用できます。
私に言わせれば、高度なフィルターと SUMPRODUCT が私のお気に入りの方法ですが、ここでは次のように言わなければなりません。
あなたはどちらが好きですか?
コメントセクションであなたの意見を私と共有してください。ぜひご意見をお待ちしています。このヒントを友達と共有することを忘れないでください。