KutoolsforOffice— 1 つのソリューション、5 つの強力なツール。少ない労力で大きな成果。

Excel で条件に基づいて一意の数値をカウントする

著者Xiaoyang変更日

Excel ワークシートでは、「特定の条件に基づいて一意の数値の個数をカウントする」という課題に直面することがよくあります。たとえば、下記スクリーンショットのようなレポートで、製品「T-shirt」の数量(Qty)に含まれる一意の値をどのようにカウントすればよいでしょうか?本記事では、このタスクをExcel でスマートに実行するための数式をいくつかご紹介します。

doc-count-unique-values-with-criteria-1


Excel 2019、2016 以前で条件に基づいて一意の数値をカウントする

Excel 2019 およびそれ以前のバージョンでは、SUM 関数、FREQUENCY 関数、IF 関数を組み合わせて、条件に基づいて範囲内の一意の値の個数をカウントする数式を作成できます。一般的な構文は次のとおりです。

{=SUM(--(FREQUENCY(IF(criteria_range=criteria,range),range)>0))}
Array formula, should press Ctrl + Shift + Enter keys together.
  • criteria_range:条件に一致させるセルの範囲を指定します。
  • criteria:範囲内の一意の値の数をカウントする際に適用する条件。
  • range:一意の値をカウントする対象となるセルの範囲。

以下の数式を空白セルに入力し、Ctrl + Shift + Enterキーを押して、正しい結果を取得してください(スクリーンショット参照)。

=SUM(--(FREQUENCY(IF(A2:A12=E2,C2:C12),C2:C12)>0))

doc-count-unique-values-with-criteria-2


数式の説明:

=SUM(--(FREQUENCY(IF(A2:A12=E2,C2:C12),C2:C12)>0))

  • IF(A2:A12=E2,C2:C12):この IF 関数は、A 列の製品が「T-shirt」の場合に C 列の値を返します。その結果は次のような配列になります:{FALSE;300;500;FALSE;400;FALSE;300;FALSE;FALSE;FALSE;350}。
  • FREQUENCY(IF(A2:A12=E2,C2:C12),C2:C12)= FREQUENCY({FALSE;300;500;FALSE;400;FALSE;300;FALSE;FALSE;FALSE;350},{200;300;500;350;400;450;300;550;200;260;350}):FREQUENCY 関数は、この配列リスト内の各数値をカウントし、次のような結果を返します:{0;2;1;1;1;0;0;0;0;0;0;0}。
  • --(FREQUENCY(IF(A2:A12=E2,C2:C12),C2:C12)>0)=--({0;2;1;1;1;0;0;0;0;0;0;0}>0):この数式は、配列内の各値が0 より大きいかどうかを判定し、次のような結果を返します:{FALSE;TRUE;TRUE;TRUE;TRUE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE}。その後、ダブルマイナス(--)によって TRUE と FALSE がそれぞれ1 と0 に変換され、最終的に次の配列が得られます:{0;1;1;1;1;0;0;0;0;0;0;0}。
  • SUM(--(FREQUENCY(IF(A2:A12=E2,C2:C12),C2:C12)>0))=SUM({0;1;1;1;1;0;0;0;0;0;0;0}):最後に、SUM 関数でこれらの値を合計し、合計数4 が得られます。

ヒント:

複数の条件に基づいて一意の値をカウントしたい場合は、数式に「*」文字を使って他の条件を追加するだけで簡単に実現できます。

=SUM(--(FREQUENCY(IF((criteria,_range1=criteria1)* (criteria,_range2=criteria2)*…,range),range)>0))

Excel 365 で条件に基づいて一意の数値をカウントする

Excel 365 では、ROWS 関数、UNIQUE 関数、FILTER 関数を組み合わせることで、条件に基づいて一意の値をカウントできます。一般的な構文は次のとおりです。

=ROWS(UNIQUE(FILTER(range,criteria_range=criteria)))
  • range:カウント対象となる一意の値を含むセルの範囲。
  • criteria_range:指定した条件に一致させるセルの範囲。
  • criteria:範囲内の一意の値の数を数えるに基づいて適用したい条件。

以下の数式をセルにコピーまたは入力し、Enterキーを押して結果を表示してください(スクリーンショット参照)。

=ROWS(UNIQUE(FILTER(C2:C12,A2:A12=E2)))

doc-count-unique-values-with-criteria-3


数式の説明:

=ROWS(UNIQUE(FILTER(C2:C12,A2:A12=E2)))

  • A2:A12=E2:この式は、セル E2 の値が範囲 A2:A12 内に存在するかどうかをチェックし、次のような結果を返します:{FALSE;TRUE;TRUE;FALSE;TRUE;FALSE;TRUE;FALSE;FALSE;FALSE;TRUE}。
  • FILTER(C2:C12,A2:A12=E2):FREQUENCY 関数は、この配列リスト内の各数値をカウントし、次のような結果を返します:{0;2;1;1;1;0;0;0;0;0;0;0}。
  • UNIQUE(FILTER(C2:C12,A2:A12=E2))=UNIQUE({300;500;400;300;350}):ここでは、UNIQUE 関数を使ってリスト配列から重複を除いた一意の値を抽出し、次のような結果が得られます:{300;500;400;350}。
  • ROWS(UNIQUE(FILTER(C2:C12,A2:A12=E2)))=ROWS({300;500;400;350}):ROWS 関数はセル範囲または配列の行数を返すため、結果は4 になります。

ヒント:

1。一致する値がデータ範囲に存在しない場合、エラー値が返されます。このエラー値を0 に置き換えるには、次の数式をご利用ください。

=IFERROR(ROWS(UNIQUE(FILTER(C2:C12,A2:A12=E2))), 0)

doc-count-unique-values-with-criteria-4

2。複数の条件に基づいて一意の値をカウントするには、数式に他の条件を追加する際に、単に「*」文字を使用すれば済みます。

=ROWS(UNIQUE(FILTER(range,(criteria_range1=criteria1)* (criteria_range2=criteria2)*…)))

使用される関連関数:

  • SUM:
  • Excel の SUM 関数は、指定した値の合計を返します。
  • FREQUENCY:
  • FREQUENCY 関数は、指定した値の範囲内で各値がどれくらいの頻度で出現するかを計算し、縦方向の配列として結果を返します。
  • ROWS:
  • ROWS 関数は、指定した参照または配列に含まれる行数を返します。
  • UNIQUE:
  • UNIQUE 関数は、リストまたは範囲から重複を除いた一意の値を返します。
  • FILTER:
  • FILTER 関数を使えば、ユーザーが定義した条件に基づいてデータ範囲を簡単にフィルタリングできます。

関連記事:

  • 列内の一意の数値または日付をカウントする
  • 重複を含む数値のリストがあり、その中で一意の値(つまりリスト内に一度だけ出現する値)の個数を、下記スクリーンショットのようにカウントしたいとします。本記事では、このタスクをExcel で素早く簡単に実行できる便利な数式をいくつかご紹介します。
  • 2 つの列間で一致する項目/重複項目をすべてカウントする
  • 2 つのデータ列を比較し、両方に共通する一致項目(重複項目)をすべてカウントするのは、多くの場合、日常的な作業です。たとえば、2 つの名前の列があり、一部の名前が第1 列と第2 列の両方に含まれているとします。このようなとき、下記スクリーンショットのように、2 つの列のいずれかに共通して存在するすべての一致した名前をカウントしたい場合があります。本チュートリアルでは、その目的をExcel で実現するための数式をいくつかご紹介します。
  • 複数の値のいずれかに等しいセルの個数をカウントする
  • A 列に製品リストがあると仮定します。ここで、C4:C6 の範囲に記載された特定の製品「Apple」「Grape」「Lemon」の合計個数を、A 列から下記スクリーンショットのように取得したいとします。通常、Excel では単純な COUNTIF 関数や COUNTIFS 関数だけではこのシナリオに対応できません。本記事では、SUMPRODUCT 関数と COUNTIF 関数を組み合わせて、この課題を素早く簡単に解決する方法をご紹介します。

最高の Office 生産性ツール

Kutools for Excel - あなたを群衆の中から際立たせます

🤖KUTOOLS AI アシスト:次に基づいてデータ分析を革新します:インテリジェント実行     コード生成  カスタム数式作成    データ分析とチャート生成  拡張機能呼び出し
人気機能検索・ハイライト・重複をマーキング    空白行を削除する    データを失うことなく列の結合またはセルを    数式を使用しない四捨五入...
スーパー VLookup複数条件    複数値    複数シート間    ファジーマッチ...
高度なドロップダウンリスト簡単なドロップダウンリスト    連動型ドロップダウンリスト    複数選択可能なドロップダウンリスト...
列マネージャー指定した数の列を追加    列の移動   非表示列の表示状態を切り替え  列を比較して同じ/異なるセルを選択...
注目の機能グリッドフォーカス    デザインビュー    強化された数式バー    ワークブックとシートマネージャーリソースライブラリ(オートテキスト)  日付ピッカー    ワークシートの統合    暗号化/セルの復号化   リストからメール送信    スーパーフィルター    特殊フィルタ(太字のフォントを持つセルをフィルタリング/イタリック/取り消し線。。。) 。。。
トップ15 ツールセット12 テキストツールテキストの追加特定の文字を削除...)  50+チャートタイプガントチャート...)  40+実用的な数式誕生日に基づいて年齢を計算します...)  19 挿入ツールQR コードを挿入パスから画像を挿入...)  12 変換ツール単語に変換する為替レートの変換...)  7 結合と分割ツール高度な行のマージExcel セルを分割...)。。。他にも多数
Kutools を好みの言語でお使いいただけます。英語、スペイン語、ドイツ語、フランス語、中国語、および40+言語以上をサポートしています!

Kutools for Excel は300 以上の機能を備えており、必要な機能が常にワンクリックで利用できます…


Office Tab - Microsoft Office(Excel を含む)でタブを使った閲覧・編集を可能にします

  • 数十もの開いているドキュメントを1 秒で切り替えられます!
  • 毎日何百回ものマウスクリックを削減して、マウス手の悩みともさよならしましょう。
  • 複数のドキュメントを閲覧・編集する際の生産性が50%も向上します。
  • Office(Excel を含む)に、Chrome、Edge、Firefox のような効率的なタブ機能をもたらします。