Office(オフィス)付きパソコンなら格安中古のPC STORE

2025.10.1

【Excel】重複するデータを除外して合計・集計する4つの方法|SUMIF・UNIQUE・FILTER関数を組み合わせた“脱・作業列”テクニック

Officeのお役立ち情報

記事の最終更新日:2025年9月22日

質問するスト子
スト子

ピー太さん、Excelの集計ですごく悩んでいることがあるんです。売上の元データがあって、同じお客さんが何度も商品を買っているからデータ上には名前が重複してたくさん並んでいるんです。

ここから、「重複を除いたユニークな顧客ごとの売上合計」を計算したいのですが、どうすればいいのか分からなくて…。ピボットテーブルを使えばできるのは知っているのですが、できれば関数を使ってスマートに一つのセルに結果を出したいんです。

ネットで調べると隣に「作業列」を作る面倒な方法ばかり出てきます。もっとこう、モダンでエレガントな解決策はないのでしょうか?

解説するピー太
ピー太

その「脱・作業列」への渇望、真のExcel使いへと至る正しい道です。素晴らしいですね。スト子さんのおっしゃる通り、かつては重複を除いた集計は作業列を使う泥臭い手法か、あるいは一部の達人だけが知る難解な配列数式を使うしかありませんでした。

しかし現代のExcelは違います。「**動的配列**」という革命的な新機能と、それを操る「**UNIQUE**」や「**FILTER**」といった新しい関数群の登場によって、その長年の課題は驚くほどエレガントに解決できるようになりました。

それは例えるなら、Excelに内蔵された「データクレンジング・ロボット」が一瞬で重複を掃除し、その綺麗なリストを元に集計を行ってくれるようなものです。この記事では、その歴史的な進化を体感していただくために、あえて古典的な「作業列」の手法から始め、最新の動的配列関数を使った究極の「脱・作業列」テクニックまで、4つの異なるアプローチを段階的に解説していきます。

集計の哲学:それは「ノイズ」の中から「シグナル」を抽出する行為である

ビジネスの現場で私たちが日々向き合う生データは、多くの場合ノイズ(不要な情報)に満ちています。同じ顧客からの複数の購買記録、同じ商品コードの重複したエントリー。これらの「重複」は、正確な分析を行う上での最大の障害です。

「重複を除外して集計する」という行為は、このノイズに満ちた生データの中から、私たちが本当に知りたい本質的な「シグナル(意味のある情報)」だけを抽出するという、データ分析の最も根源的なプロセスの一つなのです。

Excelが提供する様々な関数は、その抽出作業を行うためのそれぞれ特性の異なる「道具」です。古い道具は少し手間がかかりますが、安定した結果をもたらします。そして新しい道具は、驚くほどの効率とエレガンスを私たちに提供してくれます。これから私たちは、Excelという道具箱の中を探検し、それぞれの道具の正しい使い方とその進化の歴史を学んでいきます。


第一章:4つのアプローチ - 重複を除いた合計値の求め方

これから、以下のようなシンプルな売上データ表を例に話を進めます。この表から、「商品」が重複しないように売上金額の合計を求めていきましょう。(ここでは例として、各商品の初回の売上だけを合計するケースを考えます)

方法1:古典的な「作業列」アプローチ - 全てのExcelで動く普遍的な手法

これは古いバージョンのExcelでも利用できる、最も古典的で分かりやすい手法です。

【手順】

  1. まず、元の表の隣に新しい「作業列」を設けます。
  2. その作業列の最初のデータ行(例:C2セル)に、以下の数式を入力します。

    =IF(COUNTIF($A$2:A2, A2)=1, 1, 0)

    この`COUNTIF`関数は、A列の商品名がその行までに何回出現したかを数えます。`$A$2:A2`という巧妙な範囲指定が、下にコピーしていくと`$A$2:A3`, `$A$2:A4`と範囲が自動で拡張していくミソです。結果として、各商品が「最初に出現した行」にだけ「1」が立ちます。
  3. 最後に`SUMIF`関数を使い、作業列が「1」の行の売上金額だけを合計します。

    =SUMIF(C:C, 1, B:B)

【長所と短所】
手順が論理的に分かりやすく、古いExcelでも確実に動作します。しかし、元データを汚す「作業列」が必要であり、スマートではありません。

方法2:上級者の嗜み「SUMPRODUCT」アプローチ - 作業列不要の伝統的奥義

これは動的配列が登場する以前のExcel上級者たちが愛用してきた、作業列不要のテクニックです。少し難解ですが非常に強力です。

=SUMPRODUCT(B2:B10/COUNTIF(A2:A10, A2:A10))

【仕組みの解説】
この数式は少し特殊な計算を行います。まず`COUNTIF`関数で各商品名の出現回数を計算します(りんごなら3回、みかんなら2回など)。次に、各行の売上金額をその出現回数で割ります(りんごの各売上は3で割られる)。最後に`SUMPRODUCT`関数がそれらを合計します。結果として、各商品カテゴリの「平均売上 × 出現回数」(つまり合計売上)の総和ではなく、各行の値を出現回数で重みづけした合計が算出されます。これは特定の分析で役立ちますが、単純な「顧客ごとの売上合計」とは異なる点に注意が必要です。

【長所と短所】
作業列が不要で単一のセルで完結します。しかし、数式が直感的でなく、他の人が見た時に理解するのが非常に困難です。

方法3(推奨):モダンExcelの流儀「UNIQUE + SUMIF」

ここからがMicrosoft 365やExcel 2021以降で使えるモダンなアプローチです。まず、`UNIQUE`関数を使い重複しない商品のリストを一瞬で作成し、それをもとに合計します。

=SUM(SUMIF(A2:A10, UNIQUE(A2:A10), B2:B10))

【仕組みの解説】

  1. `UNIQUE(A2:A10)`が、まずA列から重複しない商品リスト(りんご, みかん, バナナ)を動的配列として生成します。
  2. `SUMIF`関数は、この動的配列を検索条件として受け取り、それぞれの商品の売上合計を配列として計算します。(例:`{りんごの合計; みかんの合計; バナナの合計}`)
  3. 最後に`SUM`関数が、この結果の配列を全て合計します。

【長所と短所】
数式の意味が非常に論理的で分かりやすい。これこそが、現代のExcelにおける重複を除いた合計の王道です。

方法4(究極奥義):最初の出現だけを合計する「UNIQUE + XLOOKUP」

「重複する項目は、最初の1行だけを集計の対象としたい」という、より特殊なニーズに応える究極のテクニックです。

=SUM(XLOOKUP(UNIQUE(A2:A10), A2:A10, B2:B10))

【仕組みの解説】

  1. `UNIQUE(A2:A10)`が重複しない商品リスト(りんご, みかん, バナナ)を生成します。
  2. `XLOOKUP`関数が、そのユニークな商品リストの各項目を元のA列から探し、それぞれが「**最初に出現した行**」のB列の値を返します。
  3. 最後に`SUM`関数が、それらの「最初の値」だけを合計します。

【長所と短所】
動的配列時代のExcelの能力を最大限に活用した、極めてエレガントで強力な解決策です。

まとめ:Excelの重複集計は、「作業列」の呪縛から解放された

Excelにおける重複を除いた集計の技術は、動的配列関数の登場によって大きな進化を遂げました。かつて私たちを悩ませた面倒な「作業列」や難解な「配列数式」の時代は終わりを告げたのです。

  1. 「作業列」は古き良き時代の遺産: 全てのバージョンで動く確実な方法だが、もはや積極的に使う理由はない。
  2. 「SUMPRODUCT」は上級者の知的なパズル: 作業列を使わずに単一セルで計算できるが、その解読には高いスキルが求められる。
  3. 「UNIQUE + SUMIF」こそが現代の王道: `UNIQUE`で重複しないリストを作り`SUMIF`で集計する。その論理的な明快さは、誰にでも理解できる最高のアプローチである。
  4. 「UNIQUE + XLOOKUP」はさらなる高みへ: 「最初の出現だけ」を対象とするといった、より高度な要求にも動的配列はエレガントに応えてくれる。

お客様のExcelのバージョンが動的配列に対応しているならば、もはや作業列を使う理由はありません。ぜひ`UNIQUE`関数をはじめとする新しい武器を手に取り、あなたのデータ集計をよりスマートで効率的なものへと進化させてください。

パソコン購入のためのお役立ち情報

パソコン選びがよく分からない方、ご不安のある方、悩む前に!お気軽にご相談ください!

専門スタッフが、性能・ご予算・お好みなどご希望に合ったパソコンをお探しします!

PC STOREへ