Excelで数式やピボットテーブルを使用して一意な値や異なる値をカウントする

  • これを共有
Michael Brown

このチュートリアルでは、Excel で数式を使用して一意の値をカウントする方法、およびピボット・テーブルで一意の値を自動的にカウントする方法について学習します。 また、一意の名前、テキスト、数値、大文字小文字を区別する一意の値などのカウントに関する数多くの数式例について説明します。

Excel で大規模なデータセットを扱う場合、多くの場合、そのデータセットが何個あるのかを知る必要があります。 デュプリケート 唯一無二 の値があります。 また、場合によっては 明確 (異なる)値です。

このブログを定期的にご覧になっている方は、重複をカウントするExcelの数式をすでにご存知だと思います。 そして今日は、Excelでユニークな値をカウントするさまざまな方法を探ります。 しかし、わかりやすくするために、まず用語を定義しておきましょう。

  • ユニーク 値 - これらは、リストに一度だけ表示される値です。
  • ディスティンクト values - これらは、リスト内のすべての異なる値、つまり、一意の値と重複する値の1回目の出現を加えたものです。

以下のスクリーンショットは、その違いを示しています。

そして次に、Excelで数式やピボットテーブルの機能を使って、ユニークで明確な値をカウントする方法を紹介します。

    Excelでユニークな値を数える方法

    Excelのユーザーなら誰でも一度は経験する作業です。 データのリストがあり、そのリストの中のユニークな値の数を調べる必要があります。 どうやるのか? あなたが思うより簡単です :) 以下に、異なるタイプのユニークな値を数えるためのいくつかの公式を紹介します。

    列の一意な値を数える

    Excelのワークシートに名前の列があり、その列のユニークな名前を数える必要があるとします。 解決策は、IFとCOUNTIFと組み合わせて、SUM関数を使用することです。

    =sum(if(countif()の場合 レンジ , レンジ )=1,1,0))

    備考 これは配列の数式なので、必ずCtrl + Shift + Enterで完了させてください。 これを行うと、Excelは自動的に以下のスクリーンショットのように数式を{中括弧}で囲みます。 決して中括弧を手動で入力してはいけません。

    この例では、範囲A2:A10でユニークな名前を数えるので、数式は次のような形になります。

    =SUM(IF(COUNTIF(A2:A10,A2:A10)=1,1,0))

    このチュートリアルでは、さらに、さまざまな種類のユニーク値をカウントする他の数式について説明します。 これらの数式はすべて、基本的なExcelユニーク値数式のバリエーションなので、上記の数式を分解して、その仕組みを完全に理解し、自分のデータに合わせて調整することができます。 技術的なことに興味がない場合は、次のページにスキップすることができます。は、次の計算式の例です。

    Excelのユニーク値カウントの計算式の仕組み

    SUM、IF、COUNTIFの3つの関数が使われています。

    • COUNTIF関数は、指定された範囲内で個々の値が何回現れるかを数えるものです。

      この例では countif(a2:a10,a2:a10) は配列を返します。 {1;2;2;1;2;2;2;1;2} .

    • IF関数は、COUNTIFが返す配列の各値を評価し、すべての1(ユニークな値)を保持し、その他の値をすべて0に置き換えます。

      そこで、関数 IF(COUNTIF(A2:A10,A2:A10)=1,1,0) になる if(1;2;2;1;2;2;2;1;2) = 1,1,0, という配列に変化します。 {1;0;0;1;0;0;0;1;0} ここで、1はユニークな値、0は重複した値である。

    • 最後に、SUM関数はIFが返す配列の値を合計し、ユニークな値の総数を出力します。これは、まさに私たちが望んでいたことです。

    ヒント:Excelの固有値計算式の特定の部分がどのように評価されるかを見るには、数式バーでその部分を選択し、F9キーを押してください。

    Excelで一意のテキスト値を数える

    Excelのリストに数値とテキストの両方が含まれていて、ユニークなテキスト値だけをカウントしたい場合は、上で説明した配列式にISTEXT関数を追加してください。

    =sum(if(istext(a2:a10)*countif(a2:a10,a2:a10)=1,1,0)))。

    ご存知のように、ExcelのISTEXT関数は、評価された値がテキストであればTRUE、そうでなければFALSEを返します。 アスタリスク(*)は配列式のAND演算子として機能するので、値がテキストかつユニークである場合のみIF関数が1を返し、それ以外は0です。 そしてSUM関数がすべての1を加算すると、指定した範囲内のユニークなテキスト値のカウントが表示されます。

    Ctrl + Shift + Enterキーを押して配列の式を正しく入力することを忘れずに、このような結果が得られます。

    上のスクリーンショットにあるように、この数式は、空白セル、数字、TRUEとFALSEの論理値、エラーを除いて、ユニークなテキスト値の総数を返します。

    Excelでユニークな数値をカウントする

    データのリストでユニークな数値を数えるには、先ほどユニークなテキスト値を数えるために使ったような配列式を利用します。唯一の違いは、ユニーク値の式にISTEXTの代わりにISNUMBERを埋め込むことです。

    =sum(if(isnumber(a2:a10)*countif(a2:a10,a2:a10)=1,1,0))

    注)Microsoft Excelでは、日時を通し番号で記憶しているため、それらもカウントされます。

    Excelで大文字と小文字を区別してユニークな値をカウントする

    テーブルに大文字小文字を区別するデータが含まれている場合、ユニークな値をカウントする最も簡単な方法は、以下の配列式でヘルパーカラムを作成して、重複する項目とユニークな項目を識別することでしょう。

    =IF(SUM((--EXACT($A$2:$A$10,A2)))=1, "Unique", "Dupe")

    そして、単純なCOUNTIF関数でユニークな値を数える。

    =COUNTIF(B2:B10, "unique")

    Excelでdistinct valuesを数える(ユニークと1番目の重複の発生)。

    リスト内の異なる値のカウントを得るには、次の式を使用します。

    =sum(1/countif()の場合 レンジ , レンジ ))

    これは配列の式なので、通常のEnterキーではなく、Ctrl + Shift + Enterのショートカットを押すことを忘れないでください。

    または、SUMPRODUCT 関数を使用し、Enter キーを押して通常の方法で式を完成させることもできます。

    =sumproduct(1/countif()。 レンジ , レンジ ))

    例えば、範囲A2:A10の明瞭な値を数えるには、次のどちらかを使用します。

    =sum(1/countif(a2:a10,a2:a10))とする。

    または

    =sumproduct(1/countif(a2:a10,a2:a10))です。

    Excelのdistinctの計算式の仕組み

    すでにご存知のように、COUNTIF関数は、指定した範囲に個々の値が何回現れるかを調べるために使います。 上記の例では、COUNTIF関数の結果は次のような配列になります。 {2;2;3;1;2;2;3;1;3} .

    その後、配列の各値を除数とし、1を配当とする除算を何度か行い、重複する値を重複回数に応じた分数にします。 例えば、ある値が2回出現した場合、配列には0.5の値が2項目(1/2=0.5)、3回出現した場合はは,0.3(3) の値を持つ3つの項目を配列に生成します。 この例では 1/countif(a2:a10,a2:a10))です。 は配列 {0.5;0.5;0.3(3);1;0.5;0.5;0.3(3);1;0.3(3)} .

    ここまでであまり意味がない? それは、まだSUM/SUMPRODUCT関数を適用していないからです。 これらの関数が配列内の値を合計するとき、個々の項目に関するすべての小数点の合計は、その項目がリスト内にいくつあっても常に1になります。 また、すべてのユニークな値は配列内に1として現れるので(1/1=1)、この関数が返す最終結果は、配列内に存在する個々の項目に関するすべての小数点の合計となります。の式は、リストに含まれるすべての異なる値の合計数です。

    異なる種類の異なる値をカウントするための公式

    Excelでユニークな値をカウントする場合と同様に、Excelの基本的なcount distinct式を変形して、数値、テキスト、大文字小文字を区別する値など、特定の値の種類を扱うことができます。

    以下の数式はすべて配列数式であり、Ctrl + Shift + Enter を押す必要があることを覚えておいてください。

    空白セルを無視した明瞭な値のカウント

    もし、異なる値をカウントしたい列が空白セルを含む可能性がある場合、指定した範囲に空白がないかチェックするIF関数を追加する必要があります(この場合、上で説明した基本的なExcel distinct式は#DIV/0エラーを返します)。

    =SUM(IF( レンジ "",1/COUNTIF(). レンジ , レンジ ), 0))

    例えば、範囲A2:A10で異なる値を数えるには、次のような配列式を使用します。

    =sum(if(a2:a10"",1/countif(a2:a10, a2:a10), 0))

    異なるテキスト値をカウントする式

    列内の異なるテキスト値を数えるには、先ほど空のセルを除外したのと同じ方法を用います。

    簡単に推測できるように、ISTEXT関数をExcelのcount distinct式に埋め込むだけです。

    =sum(if(istext()の場合 レンジ ),1/COUNTIF()です。 レンジ , レンジ ),""))

    そして、実際の計算式の例です。

    =sum(if(istext(a2:a10),1/countif(a2:a10, a2:a10),""))

    明瞭な数を数えるための公式

    異なる数値(数字、日付、時間)を数えるには、ISNUMBER関数を使用します。

    =sum(if(isnumber()の場合 レンジ ),1/COUNTIF()です。 レンジ , レンジ ),""))

    例えば、範囲A2:A10にあるすべての異なる数値を数えるには、次の式を使用します。

    =sum(if(isnumber(a2:a10),1/countif(a2:a10, a2:a10),""))

    Excelで大文字小文字を区別して値を数える

    大文字小文字を区別するユニークな値のカウントと同様に、最も簡単な方法は、最初の重複を含むユニークな値を識別する配列式でヘルパー列を追加することです。 式は、基本的に大文字小文字を区別するユニークな値のカウントに使ったものと同じですが、セル参照の小さな変更が大きな違いとなります。

    =IF(SUM((--EXACT($A$2:$A2,$A2)))=1, "Distinct","")

    Excel のすべての行列式は、Ctrl + Shift + Enter キーを押す必要があることを思い出してください。

    上記の式が終わったら、次のように通常のCOUNTIF式で「distinct」な値を数えることができる。

    =COUNTIF(B2:B10, "distinct")

    ワークシートにヘルパーカラムを追加する方法がない場合は、次のような複合的なものを使用します。 配列式 を使用すると、追加のカラムを作成することなく、大文字と小文字を区別した値を数えることができます。

    =sum(iferror(1/if($a$2:$a$10"", frequency(if(exact($a$2:$a$10, transpose($a$2:$a$10)), match(row($a$2:$a$10), row($a$2:$a$10)), ""), match(row($a$2:$a$10), row($a$2:$a$10)), 0), 0))

    Excelで一意な行と異なる行を数える

    Excelの一意な/異なる行のカウントは、一意な/異なる値のカウントと似ています。唯一の違いは、COUNTIFの代わりにCOUNTIFS関数を使用し、複数の列を指定して一意の値をチェックできることです。

    たとえば、A列(First Name)とB列(Last Name)の値に基づいて一意または明確な名前をカウントするには、次のいずれかの数式を使用します。

    一意な行を数えるための式。

    =SUM(IF(COUNTIFS(A2:A10,A2:A10, B2:B10,B2:B10)=1,1,0))

    異なる行をカウントする式。

    =SUM(1/COUNTIFS(A2:A10,A2:A10,B2:B10,B2:B10))

    もちろん、2つの列だけでユニークな行を数えることに限定されるわけではなく、ExcelのCOUNTIFS関数は最大127の範囲と基準のペアを処理することができます。

    Excelでピボットテーブルを使用して異なる値をカウントする

    の最新バージョンです。 エクセル 2013 エクセル 2016 は、ピボットテーブルで異なる値を自動的に数えることができる特別な機能を備えています。 次のスクリーンショットは、Excel 識別数 のように見えます。

    ある列のdistinct countを含むピボット・テーブルを作成するには、次の手順を実行します。

    1. ピボットテーブルに含めるデータを選択し、(1)と(2)を切り替えてください。 インサート タブで表示します。 テーブル をクリックします。 ピボットテーブル ボタンをクリックします。
    2. での ピボットテーブルの作成 ダイアログで、ピボット・テーブルを新しいワークシートに配置するか、既存のワークシートに配置するかを選択し、その際、必ず このデータをデータモデルに追加する のチェックボックスにチェックを入れます。

  • ピボットテーブルが開いたら、「行」「列」「値」の各エリアを好きなように配置します。 Excelのピボットテーブルをあまり使用したことがない場合は、「Excelでピボットテーブルを作成する」を参考にしてください。
  • 別個のカウントを計算したいフィールドを移動させる ( 項目 フィールド)を 価値観 エリアをクリックし フィールド値設定... をドロップダウン・メニューから選択します。
  • があります。 バリューフィールドの設定 ダイアログウィンドウが開くので、スクロールダウンして 識別数 を選択し、[OK]をクリックします。 よっしゃー .
  • また、必要に応じて、Distinct Countにカスタム名を付けることもできます。

    完了です!新しく作成されたピボット・テーブルには、このセクションの最初のスクリーンショットに示すように、個別のカウントが表示されます。

    ヒント: ソースデータを更新した後は、ピボットテーブルを更新して、別個の数を最新の状態にすることを忘れないでください。 ピボットテーブルを更新するには リフレッシュ ボタンをクリックします。 分析 タブで データ のグループです。

    このチュートリアルで説明した数式をもっと詳しく見たい方は、Excel Count Uniqueワークブックのサンプルをダウンロードしてください。

    次回は、Excelでユニークな値を検索、フィルタリング、抽出、ハイライトする様々な方法について説明します。 どうぞご期待ください。

    Michael Brown は、ソフトウェア ツールを使用して複雑なプロセスを簡素化することに情熱を注ぐ熱心なテクノロジー愛好家です。テクノロジー業界で 10 年以上の経験があり、Microsoft Excel と Outlook、さらに Google Sheets と Docs のスキルを磨いてきました。 Michael のブログは、彼の知識と専門知識を他の人と共有することに特化しており、生産性と効率を向上させるためのわかりやすいヒントとチュートリアルを提供しています。経験豊富なプロフェッショナルであろうと初心者であろうと、Michael のブログでは、これらの重要なソフトウェア ツールを最大限に活用するための貴重な洞察と実践的なアドバイスを提供しています。