Excelで同じデータが何件あるかを数えたい場面では、単純な重複チェックだけでなく、担当者、商品、日付、地域などの条件を組み合わせて集計したいことがあります。
たとえば「東京支店で、りんごを販売した件数だけを数えたい」「同じ顧客名と同じ月のデータが何行あるかを確認したい」といった作業です。
このような集計では、COUNTIF関数、COUNTIFS関数、SUMPRODUCT関数を使い分けると、元データを並べ替えずに重複数を把握できます。
重複数のカウントで基本となる考え方は、条件が1つならCOUNTIF、条件が複数ならCOUNTIFS、より柔軟な集計ならSUMPRODUCTを使うことです。
この記事では、1行目に見出しがある一覧表を例に、同じデータを複数条件で数える数式、判定列の作り方、集計時の注意点を順に解説していきます。
COUNTIFS関数による複数条件の重複数カウント
それではまず、複数条件に一致するデータ数をCOUNTIFS関数で数える方法について解説していきます。
| A列 日付 | B列 支店 | C列 商品 | D列 数量 |
|---|---|---|---|
| 2026/9/1 | 東京 | りんご | 12 |
| 2026/9/1 | 大阪 | りんご | 8 |
| 2026/9/2 | 東京 | りんご | 15 |
条件範囲と条件の指定
COUNTIFS関数は、複数の条件範囲と条件をセットで指定し、すべての条件を満たす行を数える関数です。
東京支店かつりんごという条件に一致する件数を求めるなら、空いているセルに次の数式を入力します。
=COUNTIFS(B2:B100,”東京”,C2:C100,”りんご”)
この数式では、B2:B100が東京であること、さらにC2:C100がりんごであることの両方を満たす行を数えます。
COUNTIFSは条件を追加するほど絞り込みが強くなり、いずれか一方だけに当てはまる行は集計されません。
範囲の開始行と終了行は、すべてそろえる必要があります。
たとえばB2:B100に対してC2:C99のように範囲の大きさが異なると、正しく計算できません。
データが増える見込みがある場合は、Excelテーブルに変換して列名で参照する方法も便利です。
セル参照を使った条件の切り替え
条件を数式へ直接入力すると、支店名や商品名を変えるたびに数式を書き換える必要があります。
そこで、F2セルに支店名、G2セルに商品名を入力し、次のようにセル参照を使うと再利用しやすくなります。
=COUNTIFS($B$2:$B$100,F2,$C$2:$C$100,G2)
F2とG2の文字を変更するだけで、数式は同じまま集計対象を切り替えられます。
集計条件を別セルに置く設計は、報告書の見やすさと入力ミス防止の両方に役立ちます。
範囲を絶対参照にしておくと、数式を下方向や右方向へコピーしても、元データの範囲がずれません。
一方、F2やG2は用途に応じて相対参照にすると、条件一覧を複数行に並べた集計表へ展開できます。
日付条件を追加した集計
同じ支店と商品であっても、日付まで一致するデータを確認したい場合があります。
F2に日付、G2に支店、H2に商品が入力されている場合は、次の数式で3条件の件数を求められます。
=COUNTIFS($A$2:$A$100,F2,$B$2:$B$100,G2,$C$2:$C$100,H2)
日付は見た目が同じでも、片方が文字列になっていると一致しないことがあります。
日付の表示形式だけをそろえても解決しない場合は、セルが日付として認識されているかを確認しましょう。
時刻を含むデータなら、完全一致ではなく開始日以上かつ翌日未満という条件で数える方法が安全です。
【操作のポイント】複数条件の範囲は同じ行数にそろえ、条件は直接入力よりもセル参照で管理すると集計表を使い回しやすくなります。
各行の重複判定列による件数確認
続いては、一覧の各行に重複回数を表示して、重複しているデータを見つける方法を確認していきます。
| A列 顧客名 | B列 商品 | C列 重複数 |
|---|---|---|
| 田中 | A商品 | 2 |
| 佐藤 | B商品 | 1 |
| 田中 | A商品 | 2 |
同じ組み合わせの出現回数
顧客名と商品の組み合わせが何回出てくるかをC列に表示するなら、C2へ次の数式を入力して下へコピーします。
=COUNTIFS($A$2:$A$100,A2,$B$2:$B$100,B2)
田中とA商品の組み合わせが2行あれば、それぞれの行に2と表示されます。
結果が2以上の行だけをフィルターすれば、重複レコードをすばやく確認できます。
顧客名だけが同じでも商品が異なれば、別の組み合わせとして扱われます。
反対に、商品だけで重複を判断したい場合は、COUNTIF関数で商品列だけを対象にします。
先頭行以外を重複として表示
同じ組み合わせのうち、最初の1件は残し、2件目以降だけに重複という文字を出したいケースもあります。
C2セルには次の数式を使います。
=IF(COUNTIFS($A$2:A2,A2,$B$2:B2,B2)>1,”重複”,””)
範囲の終点を現在行にしているため、上から順に数えたときの2回目以降だけが判定されます。
全件数を表示する式と、2件目以降だけを示す式は目的が異なるため、削除前の確認では使い分けが重要です。
この判定列を基準にフィルターをかければ、原本を並べ替えずに削除候補だけを表示できます。
削除作業の前には、別シートへコピーするかバックアップを保存しておくと安心です。
空白セルを除外する条件
空白行がある一覧でそのままCOUNTIFSを使うと、空白同士も重複として数えられる場合があります。
空白を除外して重複だけを判定する場合は、次のようにIF関数を組み合わせます。
=IF(OR(A2=””,B2=””),””,COUNTIFS($A$2:$A$100,A2,$B$2:$B$100,B2))
顧客名または商品が空白なら空欄を返し、入力済みの組み合わせだけに重複数を表示します。
空白をデータとして扱うか除外するかを最初に決めると、集計結果の誤解を防げます。
【操作のポイント】重複数の列は、全件の回数を知るための列と、削除候補を見つけるための列を分けると確認しやすくなります。
SUMPRODUCT関数による柔軟な条件集計
続いては、COUNTIFSでは表現しにくい条件を含めて重複数を数えるSUMPRODUCT関数を確認していきます。
| A列 日付 | B列 地域 | C列 金額 |
|---|---|---|
| 2026/9/3 | 関東 | 12000 |
| 2026/9/8 | 関東 | 18000 |
期間と文字列の組み合わせ
ある月の関東データだけを数えるように、開始日と終了日を使った条件ではSUMPRODUCT関数が役立ちます。
=SUMPRODUCT((A2:A100>=DATE(2026,9,1))*(A2:A100<DATE(2026,10,1))*(B2:B100=”関東”))
各条件式は、条件に合う行を1、合わない行を0として扱います。
それらを掛け算することで、すべてに一致する行だけが1となり、SUMPRODUCTが合計件数を返します。
終了日を月末日に固定せず、翌月1日未満とする指定は月の日数の違いに強い書き方です。
| A | B | C | H | |
|---|---|---|---|---|
| 1 | 日付 | 地域 | 金額 | 集計結果 |
| 2 | 2026/9/3 | 関東 | 12000 | 2 |
数式を入力したあと、セルの表示形式を標準にして、期待した件数になっているか確認しましょう。
部分一致を含む件数
商品名に特定の文字を含むデータを数えたい場合は、ワイルドカードを利用できます。
=COUNTIFS(C2:C100,”*りんご*”,B2:B100,”東京”)
この式では、商品名にりんごという文字を含み、支店が東京の行を数えます。
アスタリスクは任意の文字列を表すため、青りんごやりんごジュースも対象になります。
完全一致だけを数えたい場合は、ワイルドカードを付けずに条件を指定してください。
数値条件を含む件数
売上金額が1万円以上で、特定地域に属するデータ数を確認する場合にも、COUNTIFS関数を使えます。
=COUNTIFS(B2:B100,”関東”,C2:C100,”>=10000″)
比較演算子を文字列として指定する点が重要です。
セル参照と比較演算子を組み合わせる場合は、”>=”&F2のようにアンパサンドで連結します。
【操作のポイント】日付の範囲、部分一致、数値の比較を含めるときは、条件の書き方とデータ型を確認してから集計します。
重複数集計で起こりやすいエラー
続いては、数式を入力しても重複数が合わないときの代表的な原因を確認していきます。
| 確認項目 | 起こりやすい状況 |
|---|---|
| 余分な空白 | 見た目は同じ文字列なのに一致しない |
| 文字列の日付 | 期間条件で件数が0になる |
余分な空白と全角半角
氏名や商品コードに先頭、末尾の空白が含まれていると、見た目が同じでも別データになります。
COUNTIFSは文字の見た目ではなく、セルに保存されている値を比較します。
TRIM関数で連続する空白を整理したり、CLEAN関数で印刷できない文字を除去したりすると改善することがあります。
全角と半角、ハイフンの種類、数字の文字列と数値も確認対象です。
参照範囲のずれ
数式をコピーした際に範囲が動くと、行ごとに異なる範囲を数えてしまいます。
元データ全体を対象にする範囲には、$A$2:$A$100のような絶対参照を使用しましょう。
判定対象のA2やB2は相対参照、検索範囲は絶対参照という組み合わせが基本です。
テーブル化したデータなら、行数が増えても参照範囲を広げる手間が減ります。
フィルター表示と集計値
COUNTIFやCOUNTIFSは、通常は非表示の行も含めて数えます。
フィルターで表示されている行だけを対象にしたい場合は、SUBTOTAL関数やFILTER関数を組み合わせる必要があります。
集計したい対象が全データなのか、絞り込み後の表示行なのかを明確にしましょう。
【操作のポイント】件数が想定と違う場合は、文字の空白、データ型、絶対参照、非表示行の扱いを順番に確認します。
ピボットテーブルによる重複データの集計
続いては、数式を大量にコピーせず、重複する組み合わせを一覧で集計するピボットテーブルを確認していきます。
| 支店 | 商品 | 件数 |
|---|---|---|
| 東京 | りんご | 2 |
| 大阪 | りんご | 1 |
行ラベルへの項目配置
元データの表内を選択し、挿入タブからピボットテーブルを作成します。
支店と商品を行の領域へ順番に配置すると、同じ組み合わせがひとまとまりに集約されます。
元データに空白見出しがあるとピボットテーブルを作成できないため、1行目の見出しを確認してください。
値フィールドの個数設定
商品や顧客名など、空白が少ない項目を値の領域へ配置します。
集計方法が合計になった場合は、値フィールドの設定からデータの個数へ変更します。
件数が2以上の行を確認すれば、重複している組み合わせを効率よく見つけられます。
数値列を値に置く場合は、意図せず合計になりやすいため設定を確認しましょう。
更新とフィルターの活用
元データに行を追加した後は、ピボットテーブル上で右クリックし、更新を実行します。
重複だけに絞る場合は、件数フィールドに値フィルターを設定して2以上を指定します。
定期的に同じ集計を行うなら、元データをテーブル化しておくと更新漏れを減らせます。
【操作のポイント】一覧として重複パターンを把握したいときは、判定列を増やすよりピボットテーブルが見やすい場合があります。
まとめ エクセルで重複数をカウントする方法
エクセルで重複数をカウントする際は、条件の数と確認したい目的に合わせて関数や集計方法を選びます。
単一条件ならCOUNTIF関数、支店と商品、日付と担当者のような複数条件ならCOUNTIFS関数が基本です。
各行の重複数を表示する場合は、検索範囲を絶対参照にして、現在行の値を条件に指定します。
2件目以降だけを重複として表示すれば、データクレンジングや削除候補の抽出にも活用できます。
期間指定、部分一致、数値比較などを含める場合は、SUMPRODUCT関数やワイルドカードも有効です。
件数が合わないときは、空白文字、全角半角、日付のデータ型、数式の参照範囲を確認しましょう。
重複パターンをまとめて眺めたい場合は、ピボットテーブルで件数を集計すると、表全体の傾向をつかみやすくなります。