複数の条件に基づいてExcelで一意の値を数えるにはどうすればよいですか?
多くの実用的なシナリオでは、単に値を数えるだけでなく、データ内の特定の条件を満たす一意の項目の数を把握する必要があります。例えば、特定の販売担当者が販売した異なる製品の数を知りたい場合や、特定の期間内に配置された一意の注文数を確認したい場合があります。Excelでこのようなタスクを効率的に処理するには、適切な数式、ピボットテーブルなどの高度な機能、またはカスタムVBAソリューションに精通する必要があります。この記事では、1つまたは複数の条件に基づいて一意の値を数えるためのいくつかの実用的な方法について説明し、ステップバイステップの手順とヒントを提供します。
ピボットテーブルを使用して一意の値を数える(個別カウント、Excel2013以降)
VBAコードを使用して一意の値を数える(複雑/自動化されたケース用)
1つの条件に基づいて一意の値を数える
一般的なケースを考えてみましょう:トムが販売した異なる製品の数を数えたいとします。この方法は、シンプルなデータセットがあり、個人の販売記録などの単一の条件に基づいて一意性を評価したい場合に適しています。配列数式を慎重に使用する必要がありますが、基本的にはシンプルです。
このシナリオでは、次の数式を空白のセル(例:セルG2)に入力します:
=SUM(IF("トム"=$C$2:$C$20,1/(COUNTIFS($C$2:$C$20, "トム", $A$2:$A$20, $A$2:$A$20)),0))
数式を入力後、配列数式として確認するために Ctrl + Shift + Enter (Enterだけではない)を押します。数式バーに中括弧が表示され、以下のスクリーンショットのように結果がすぐに表示されます:
注意:
- “トム”は結果をフィルタリングするために使用する条件です。“トム”を別のセルへの参照(例:$F$2)に置き換えることもできます。これにより柔軟性が増します。
- $C$2:$C$20 には評価される販売担当者の名前が含まれています。
- $A$2:$A$20 は、一意のカウントを取得したい製品の列です。
- データ範囲が変更された場合は、参照もそれに応じて調整してください。
ヒント:Excel 365またはExcel 2019以降を使用している場合、UNIQUE
およびFILTER
関数を使用するとより簡単な数式を作成できます。
#DIV/0! エラーが発生した場合は、基準を再確認し、範囲の長さが等しいことを確認してください。
2つの指定された日付に基づいて一意の値を数える
特定の日付範囲内の一意のアイテムの数を調べる必要がある場合、例えば2016年9月1日から2016年9月30日の間に販売されたすべての一意の製品を探すときは、このアプローチを使用できます。これは、月次、四半期、またはカスタム日付範囲などの特定の期間間のデータトレンドを分析する際に特に便利です。ただし、日付の書式設定には注意が必要です。ワークシート内の日付値と一致させる必要があります。
結果を表示したい空白のセルに次の数式を入力します:
=SUM(IF($D$2:$D$20<=DATE(2016,9,30)*($D$2:$D$20>=DATE(2016,9,1)),1/COUNTIFS( $A$2:$A$20, $A$2:$A$20, $D$2:$D$20, "<="&DATE(2016,9,30),$D$2:$D$20, ">="&DATE(2016,9,1))),0)
数式を入力した後、配列数式として実行するために Ctrl + Shift + Enter を押します。下のスクリーンショットに結果が示されています:
注意:
- 2016,9,1 および 2016,9,30 は開始日と終了日の基準です。必要に応じてこれらを変更するか、動的フィルターのためにセル参照を使用することもできます。
- $D$2:$D$20 にはチェック対象の日付エントリが含まれています。
- $A$2:$A$20 は再び一意にカウントしたいアイテムまたは製品の列です。
- 期待通りに結果が表示されない場合は、日付形式と範囲を確認し、有効なExcel日付として保存されていることを確認してください。
ヒント:地域の日付書式設定の問題を回避するために DATE(年, 月, 日) を使用します。動的範囲を使用する場合、明瞭さのために名前付き範囲を考えると良いでしょう。
2つの条件に基づいて一意の値を数える
9月にトムが販売した製品のみを分析したい場合、名前と日付範囲を組み合わせて一意のカウントを行うことになります。このシナリオは、期間ベースのパフォーマンスレビューまたはセグメント分析において一般的です。基準が拡大するにつれて、数式はより複雑になり、データの正確性に対する注意がさらに重要になります。
次の数式を任意の空白のセル(例:H2)に入力します:
=SUM(IF(("トム"=$C$2:$C$20)*($D$2:$D$20<=DATE(2016,9,30)*($D$2:$D$20>=DATE(2016,9,1))),1/COUNTIFS($C$2:$C$20, "トム", $A$2:$A$20, $A$2:$A$20, $D$2:$D$20, "<="&DATE(2016,9,30),$D$2:$D$20, ">="&DATE(2016,9,1))),0)
数式を入力後、 Ctrl + Shift + Enter で確認します。一意のカウントがすぐに表示されます;次の図を確認してください:
注意:
- “トム”は名前の基準であり、“2016,9,1”と“2016,9,30”は日付範囲の境界です。必要に応じて調整するか、セル参照を使用して動的に設定します。
- $C$2:$C$20 はスタッフ(または最初の基準)の列です; $D$2:$D$20 は日付列です; $A$2:$A$20 には一意にカウントしたいアイテムが含まれています。
- エラーを防ぐために、すべての範囲の長さが等しくなければなりません。
トムが販売した一意の製品または南部地域で販売されたものをカウントしたいなど、「または」条件を使用する場合、次の数式を使用できます。これにより、検索条件を広げることができますが、データが両方の条件に一致する場合は結果が重複することがあります:
=SUM(--(FREQUENCY(IF(("トム"=$C$2:$C$20)+("南部"=$B$2:$B$20), COUNTIF($A$2:$A$20, "<"&$A$2:$A$20), ""), COUNTIF($A$2:$A$20, "<"&$A$2:$A$20))>0))
Ctrl + Shift + Enter を忘れないでください。結果は以下のようになります:
ヒント:「または」条件を適用する際、同じレコードが両方の条件を満たす場合、二重カウントになる可能性に注意してください。大規模なデータセットの場合、パフォーマンスに影響が出ることがあります。
3つの条件に基づいて一意の値を数える
場合によっては、9月にトムが北部地域だけで販売した一意の製品を決定するなど、3つ以上の条件を必要とする分析を行うことがあります。これは、多角的なデータ分析において報告やターゲットを絞ったビジネスインサイトを得るために一般的です。このような複合ロジックを処理するには、慎重な参照管理が不可欠です。
次の配列数式を空白のセル(例:I2)に入れます:
=SUM(IF(("トム"=$C$2:$C$20)*($D$2:$D$20<=DATE(2016,9,30))*($D$2:$D$20>=DATE(2016,9,1))*("北部"=$B$2:$B$20),1/COUNTIFS($C$2:$C$20, "トム", $A$2:$A$20, $A$2:$A$20, $D$2:$D$20, "<="&DATE(2016,9,30), $D$2:$D$20, ">="&DATE(2016,9,1), $B$2:$B$20, "北部")),0)
Ctrl + Shift + Enter を押して完了します。参考までにサンプル結果は次のとおりです:
高度な条件では、すべての範囲が一致しており、データ型(日付やテキストなど)が正しいことを再確認してください。不整合はエラーや誤った結果を引き起こす可能性があります。
ヒント:
- 大規模なデータセットでパフォーマンスの問題が発生した場合は、数式を分解するか、Excelのピボットテーブルソリューションを使用することを検討してください。
- すべての基準に対する名前付き範囲やセル参照を使用することで、可読性が向上し、数式エラーが減少します。
- 頻繁に使用する場合は、これらの数式を名前付きセル参照やカスタム関数に記録することを検討してください。
ピボットテーブルを使用して一意の値を数える(個別カウント、Excel 2013以上)
Excel 2013以降のユーザー向けに、ピボットテーブルは1つまたは複数の基準に基づいて一意の値を数えるためのよりインタラクティブで数式不要の代替手段を提供します。個別カウント機能は、大規模なデータセットを効率的に要約し、フィルタリングするのに役立ち、この方法は特に動的なレポートベースの環境に適しています。ただし、以前のバージョンのExcelではピボットテーブル内で個別カウント機能はサポートされていません。
この方法の使い方:
- データセットを選択し、挿入 > ピボットテーブルに進みます。
- ピボットテーブルの作成ダイアログボックスで、ピボットテーブルを配置する場所を選択し、「このデータをデータモデルに追加」のチェックボックスをオンにしてから OK をクリックします。
- 一意にカウントしたいフィールド(例:製品)を値エリアにドラッグします。デフォルトでは「...の個数」として表示されます。
- 値エリアのフィールドをクリックし、値フィールドの設定を選択します。
- ポップアップダイアログで下にスクロールし、個別カウントを選択します(このオプションはExcel 2013以降でのみ利用可能で、ピボットテーブルが「このデータをデータモデルに追加」オプションを有効にして作成された場合に表示されます)。
- 基準フィールド(例:販売担当者、地域、日付)をフィルタ、または行/列エリアに追加して、単一または複数の条件を適用します。
- ピボットテーブルには、選択した基準でフィルタリングされた一意の値のカウントが表示されます。
利点:非常に視覚的で、フィルタを数式を編集せずに簡単に調整でき、インタラクティブなレポートに適しています。
制限:Excel 2010以前では利用できません;新しいデータを追加するには、ピボットテーブルを手動で更新する必要があります。
実用的なヒント:意図しない同一レコード内の重複がないことを常に確認してください。個別カウントオプションが見つからない場合は、ピボットテーブルを再作成し、「このデータをデータモデルに追加」オプションを確認してください。
VBAコードを使用して一意の値を数える(複雑/自動化されたケース用)
時々、特に非常に大規模なデータセットを扱う場合や分析を頻繁に繰り返す場合、さまざまな基準に基づいて一意の値を自動的に数える必要があります。VBAマクロは、設定後に手動での介入なしで異なるロジック(マルチコンディションフィルタリングを含む)を迅速に処理できるため、このような状況に理想的です。ただし、VBAは通常のExcel機能よりも高度であるため、マクロに慣れているユーザーまたは継続的な分析ニーズを持つユーザーに最適です。
操作手順:
- Alt + F11 を押してVBAエディタを開きます。エディタで挿入 > モジュールを選択して新しいモジュールを作成します。
- 次のVBAコードをコピーしてモジュールに貼り付けます:
Sub CountUniqueWithCriteria()
Dim DataRange As Range
Dim CriteriaRange As Range
Dim CriteriaValue As Variant
Dim Dict As Object
Dim i As Long
Dim UniqueCount As Long
Dim ResultCell As Range
Set Dict = CreateObject("Scripting.Dictionary")
' Prompt for range settings
Set DataRange = Application.InputBox("Select data range (items to count):", "KutoolsforExcel", Type:=8)
Set CriteriaRange = Application.InputBox("Select criteria range (e.g. Salesperson):", "KutoolsforExcel", Type:=8)
CriteriaValue = Application.InputBox("Enter criteria value:", "KutoolsforExcel", "", Type:=2)
Set ResultCell = Application.InputBox("Select cell for result output:", "KutoolsforExcel", Type:=8)
On Error Resume Next
For i = 1 To DataRange.Rows.Count
If CriteriaRange.Cells(i, 1).Value = CriteriaValue Then
If Not Dict.Exists(DataRange.Cells(i, 1).Value) Then
Dict.Add DataRange.Cells(i, 1).Value, 1
End If
End If
Next i
UniqueCount = Dict.Count
ResultCell.Value = UniqueCount
MsgBox "Unique count for '" & CriteriaValue & "': " & UniqueCount, vbInformation, "KutoolsforExcel"
End Sub
- VBAエディタを閉じてワークシートに戻ります。 Alt + F8 を押し、CountUniqueWithCriteriaを選択してマクロを実行します。
- 入力プロンプトに従ってデータに応じた範囲と基準を指定します。結果は選択したセルに表示され、メッセージボックスとしても表示されます。
パラメータの説明と注意:
- このマクロは現在、1つの基準に対応しています。複数の基準に対応させるには、ループ内の
If ... Then
ロジックを変更します。 - マクロを実行する前に常にワークブックを保存してください。変更は元に戻せません。
- 実行エラーが発生した場合は、Excelの設定でマクロを有効にしてください。
- この方法は、手動の数式が煩雑になるような大規模または頻繁に更新されるデータに適しています。
利点:高度にカスタマイズ可能で自動化でき、大規模で変化するデータセットを効率的に処理します。高度または反復的なワークフローのニーズに適しています。
欠点:マクロの許可が必要で、初心者はVBA操作に慣れるのに時間がかかることがあります。
基準に基づく一意の値のカウントを扱う際は、常に範囲参照を確認し、すべての基準列がサイズ的に一致していることを確認してください。範囲の不一致はエラーや誤った結果の一般的な原因です。数式が予期しない結果を返す場合は、非表示の書式設定の問題や空白のセルを確認してください。パフォーマンスが重要なシナリオでは、ピボットテーブルとVBAが配列数式に代わる堅牢な代替手段を提供します。自身のスキルレベルとデータセットの複雑さに最も適したソリューションを選択してください。Kutools for Excelは、これらのタスクをさらに効率的にするための追加のユーティリティやショートカットを提供し、複雑なワークブックでも大きな効率向上を実現します。
最高のオフィス業務効率化ツール
🤖 | Kutools AI Aide:データ分析を革新します。主な機能:Intelligent Execution|コード生成|カスタム数式の作成|データの分析とグラフの生成|Kutools Functionsの呼び出し…… |
人気の機能:重複の検索・ハイライト・重複をマーキング|空白行を削除|データを失わずに列またはセルを統合|丸める…… | |
スーパーLOOKUP:複数条件でのVLookup|複数値でのVLookup|複数シートの検索|ファジーマッチ…… | |
高度なドロップダウンリスト:ドロップダウンリストを素早く作成|連動ドロップダウンリスト|複数選択ドロップダウンリスト…… | |
列マネージャー:指定した数の列を追加 |列の移動 |非表示列の表示/非表示の切替| 範囲&列の比較…… | |
注目の機能:グリッドフォーカス|デザインビュー|強化された数式バー|ワークブック&ワークシートの管理|オートテキスト ライブラリ|日付ピッカー|データの統合 |セルの暗号化/復号化|リストで電子メールを送信|スーパーフィルター|特殊フィルタ(太字/斜体/取り消し線などをフィルター)…… | |
トップ15ツールセット:12 種類のテキストツール(テキストの追加、特定の文字を削除など)|50種類以上のグラフ(ガントチャートなど)|40種類以上の便利な数式(誕生日に基づいて年齢を計算するなど)|19 種類の挿入ツール(QRコードの挿入、パスから画像の挿入など)|12 種類の変換ツール(単語に変換する、通貨変換など)|7種の統合&分割ツール(高度な行のマージ、セルの分割など)|… その他多数 |
Kutools for ExcelでExcelスキルを強化し、これまでにない効率を体感しましょう。 Kutools for Excelは300以上の高度な機能で生産性向上と保存時間を実現します。最も必要な機能はこちらをクリック...
Office TabでOfficeにタブインターフェースを追加し、作業をもっと簡単に
- Word、Excel、PowerPointでタブによる編集・閲覧を実現。
- 新しいウィンドウを開かず、同じウィンドウの新しいタブで複数のドキュメントを開いたり作成できます。
- 生産性が50%向上し、毎日のマウスクリック数を何百回も削減!
全てのKutoolsアドインを一つのインストーラーで
Kutools for Officeスイートは、Excel、Word、Outlook、PowerPoint用アドインとOffice Tab Proをまとめて提供。Officeアプリを横断して働くチームに最適です。





- オールインワンスイート — Excel、Word、Outlook、PowerPoint用アドインとOffice Tab Proが含まれます
- 1つのインストーラー・1つのライセンス —— 数分でセットアップ完了(MSI対応)
- 一括管理でより効率的 —— Officeアプリ間で快適な生産性を発揮
- 30日間フル機能お試し —— 登録やクレジットカード不要
- コストパフォーマンス最適 —— 個別購入よりお得