メインコンテンツへスキップ

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

Author: Xiaoyang Last Modified: 2025-08-06

Excelワークシートでは、特定の条件に基づいて一意の数値の数をカウントする問題に直面することがあります。例えば、以下のスクリーンショットのようなレポートから「Tシャツ」のユニークな数量(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))}
配列数式であり、Ctrl + Shift + Enterキーを同時に押す必要があります。
  • 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シャツ」の場合、列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): FILTER関数は、配列リスト内の各数値をカウントするために使用され、次のような結果を返します:{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つの列間のすべての一致または重複をカウントすることは、私たちにとって一般的な作業かもしれません。たとえば、2つの列の名前があり、一部の名前が最初の列と2番目の列の両方に表示される場合、以下に示すように、2つの列間のすべての一致した名前(一致が2つの列内のどこにあっても)をカウントしたいとします。このチュートリアルでは、Excelでこの目標を達成するためのいくつかの数式を紹介します。
  • 多くの値のいずれかに等しいセルの数をカウントする
  • 列Aに製品のリストがあり、列Aから範囲C4:C6にリストされている特定の製品(Apple、Grape、Lemon)の合計数を取得したいとします。通常、Excelでは単純なCOUNTIFやCOUNTIFS関数ではこのシナリオでは機能しません。この記事では、SUMPRODUCTとCOUNTIF関数の組み合わせを使用してこのジョブを迅速かつ簡単に解決する方法について説明します。

最高のオフィス生産性ツール

Kutools for Excel - 群衆から一歩抜け出すためのお手伝い

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

Kutools for Excelは300以上の機能を誇り、必要なものがクリック一つで利用可能です...


Office Tab - Microsoft Office(Excel含む)でタブ形式の読み書きを可能に

  • 数十の開いている文書間を1秒で切り替え!
  • 毎日数百回のマウスクリックを減らし、マウス疲れとはおさらば!
  • 複数の文書を閲覧・編集する際の作業効率を50%向上します。
  • Chrome、Edge、Firefoxのように、Office(Excel含む)に効率的なタブをもたらします。