この記事では、Excelで同じ名前ごとにデータを集計する方法について、UNIQUE関数やSUMIF関数などを使ったやり方と、それをマクロで自動化する方法を解説します。
ポイントは以下の3点です。
・UNIQUE関数で重複を削除し、名前一覧を作成する
・SUMIF関数で名前ごとの合計値を求める
・COUNTIF関数で名前ごとのデータ数を集計する
集計作業は関数を使えば簡単に効率化できるので、ぜひマスターしておきましょう!
エクセルで同じ名前ごとにまとめて集計する方法【UNIQUE関数】
それでは、以下のサンプルデータを使って名前ごとにまとめて集計する方法を見ていきましょう。
A列に名前が入力されています。
集計のためにはまず、ユニークな名前の一覧を作成する必要があります。
ここではE2セルに以下の数式を入力し、名前の重複を排除します。
=UNIQUE(A2:A10)
UNIQUE関数は指定した範囲内のユニークな値だけを返してくれる関数です。
これにより、E列には田中、山田、斎藤の3つの名前が表示されます。
数式を入力したらENTERキーで確定し、F2セルに次の数式を入力します。
=SUMIF($A$2:$A$10,E2,$B$2:$B$10)
SUMIF関数は、指定した検索条件に合致するセルの合計を求める関数です。
第1引数で検索対象の範囲、第2引数で検索条件、第3引数で合計対象の範囲を指定します。
ここでは、名前列であるA列を検索対象($A$2:$A$11)に、E2セルの名前を検索条件(E2)に、点数列のB列を合計対象($B$2:$B$11)にしています。
$マークはセルの絶対参照を意味し、数式をコピーしても参照先が変わらないようにするために使います。
F2セルでENTERキーを押すと、田中さんの合計点がF2セルに表示されます。
同様にF2の数式を下方向にコピーすれば、各名前の合計売上が一覧できます。
エクセルで同じ名前ごとにまとめて集計する方法【COUNTIF関数】
続いて、COUNTIF関数を使って名前ごとのデータ件数を数える方法を解説します。
先ほどのデータにG列を追加し、G2セルに以下の数式を入力しましょう。
=COUNTIF($A$2:$A$10,E2)
COUNTIF関数は指定範囲内で検索条件に一致するセルの個数を返します。
SUMIF関数と同様、検索対象をA列($A$2:$A$10)、検索条件をE2セルの名前(E2)としています。
これを下方向にコピーすれば、各名前の件数(科目数)がG列に表示されます。
このように、SUMIF関数とCOUNTIF関数を駆使することで、名前ごとの合計や件数を簡単に集計できるのです。
同じ名前ごとにまとめて集計する方法【マクロで実行】
最後に、UNIQUE関数とSUMIF関数の処理をマクロにして、ボタン操作で一括実行する方法をお伝えします。
Excelの「開発」タブを表示し、「Visual Basic」をクリックしてマクロエディタ(VBE)を開きます。
「挿入」メニューから「標準モジュール」を追加し、以下のコードを貼り付けましょう。
コードの処理内容は次の通りです。
1. 「A列の最終行」と「E2セル」を変数として定義
2. E列とF列の既存データをクリア
3. E2セルにUNIQUE関数で名前一覧を作成し、最終行までオートフィル
4. 名前セルを1つずつ繰り返し処理し、SUMIF関数で対応する合計数を算出
コードを保存したらマクロを実行する前に、Excelの「開発」タブで「マクロのセキュリティ」を「警告を表示してすべてのマクロを無効にする」に設定しておきます。
準備ができたらExcelシートに戻り、適当な場所にボタンを挿入します。
ボタンを右クリックして「マクロの割り当て」をクリックし、上で作成したマクロ(NameSubTotal)を選択します。
あとはサンプルデータを入力し、ボタンをクリックするだけで、一瞬で名前別の合計点数が集計されるはずです。
まとめ Excelの関数とマクロを使って名前別の集計を行う方法
以上、Excelの関数とマクロを使って名前別の集計を行う方法をご紹介しました。
大量のデータを扱う際や、定型の集計作業が多い場合は特に便利だと思います。
ただし、マクロはセキュリティ上のリスクもあるため、信頼できるファイルでのみ使用するよう注意が必要です。
皆さんも業務の効率化や生産性アップのために、ぜひExcelの関数とマクロを活用してみてくださいね。