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

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

Author: Xiaoyang Last Modified: 2025-05-23

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関数の組み合わせを使用してこのジョブを迅速かつ簡単に解決する方法について説明します。

最高のOffice生産性ツール

Kutools for Excel - あなたを群衆から際立たせるツール

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

Kutools for Excelは300以上の機能を誇り、必要なものがワンクリックで手に入ります...


Office Tab - Microsoft Office(Excel含む)でのタブ形式の閲覧と編集を有効にする

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