「エラーが混じっている列の合計を出したいのに、数式がエラーになってしまう…」そんな場面はありませんか?
ExcelのSUM関数やSUBTOTAL関数は、範囲にエラー値が1つでもあると集計できません。#N/A や #VALUE! が混在するデータは意外と多いですよね。
そんなときに頼れるのがAGGREGATE関数です。エラー値や非表示行を除外しつつ、19種類の集計を使い分けられます。この記事では基本の書き方から実務の活用パターンまで紹介します。
ExcelのAGGREGATE関数とは?
AGGREGATE関数(読み方: アグリゲート関数)は、エラー値や非表示行を除外して集計できる関数です。
名前の「AGGREGATE」は英語で「集約する」を意味します。合計・平均・最大値など19種類の集計を1つの関数で切り替えられます。
最大の特長は エラー除外 です。SUBTOTAL関数はエラー値があると計算できません。AGGREGATE関数ならオプション番号の指定だけで、エラーをスキップして集計してくれますよ。
AGGREGATE関数にできることをまとめると、次のとおりです。
- エラー値(
#N/A#VALUE!#REF!など)を除外して集計する - フィルターや手動で非表示にした行を除外する
- 19種類の集計方法を番号で切り替える(LARGE・SMALL・MEDIANなども対応)
- ネストされたSUBTOTAL関数やAGGREGATE関数を自動で無視する
「エラーが混じるデータを安全に集計したい」ときに、まず検討したい関数です。
NOTE
AGGREGATE関数はExcel 2010以降で使えます。Excel 2007以前では使用できないので注意してください。
AGGREGATE関数の書き方(構文と引数)
基本構文
=AGGREGATE(集計方法, オプション, 参照1, [参照2], ...)
カッコの中に「何で集計するか」「何を除外するか」「どこを集計するか」を指定します。
引数の説明
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| 集計方法 | 必須 | 集計に使用する関数を表す番号(1〜19) |
| オプション | 必須 | 除外する対象を指定する番号(0〜7) |
| 参照1 | 必須 | 集計の対象となるセル範囲 |
| 参照2, … | 任意 | LARGE・SMALL等で使うk値(順位)、または追加の範囲 |
SUBTOTAL関数との違いは「オプション」引数がある点です。この引数でエラー除外や非表示行の除外を細かく制御できます。
集計方法(第1引数)一覧
AGGREGATE関数は19種類の集計に対応しています。
| 番号 | 対応する関数 | 集計内容 |
|---|---|---|
| 1 | AVERAGE | 平均 |
| 2 | COUNT | 数値の個数 |
| 3 | COUNTA | 空白以外の個数 |
| 4 | MAX | 最大値 |
| 5 | MIN | 最小値 |
| 6 | PRODUCT | 積(すべて掛け合わせ) |
| 7 | STDEV.S | 標本標準偏差(ばらつきの指標) |
| 8 | STDEV.P | 母標準偏差 |
| 9 | SUM | 合計 |
| 10 | VAR.S | 標本分散 |
| 11 | VAR.P | 母分散 |
| 12 | MEDIAN | 中央値 |
| 13 | MODE.SNGL | 最頻値(最も多い値) |
| 14 | LARGE | k番目に大きい値 |
| 15 | SMALL | k番目に小さい値 |
| 16 | PERCENTILE.INC | 百分位数(0〜1の範囲) |
| 17 | QUARTILE.INC | 四分位数(0〜4の範囲) |
| 18 | PERCENTILE.EXC | 百分位数(0と1を除く) |
| 19 | QUARTILE.EXC | 四分位数(1〜3の範囲) |
実務でよく使うのは 9(合計)・1(平均)・4(最大値)・5(最小値) の4つです。まずはこれだけ覚えておけば十分ですよ。
TIP
番号14(LARGE)と15(SMALL)は第4引数に「k」を指定します。たとえば
=AGGREGATE(14, 6, A1:A10, 2)は「エラーを無視して2番目に大きい値」を返します。
オプション(第2引数)一覧
オプション番号で「何を除外するか」を指定します。
| 番号 | 除外する対象 |
|---|---|
| 0 | ネストされたSUBTOTAL・AGGREGATE関数のみ |
| 1 | 非表示行 + ネスト関数 |
| 2 | エラー値 + ネスト関数 |
| 3 | 非表示行 + エラー値 + ネスト関数 |
| 4 | 何も除外しない |
| 5 | 非表示行のみ |
| 6 | エラー値のみ |
| 7 | 非表示行 + エラー値 |
実務で最も使うのは 6(エラー値を除外) です。フィルター連動も必要なら 7(非表示行 + エラー値) を選びましょう。
TIP
覚え方のコツは「6 = エラー除外」です。これだけ覚えれば、ほとんどの場面に対応できますよ。
AGGREGATE関数の基本的な使い方
エラー値を無視して合計する
実際にAGGREGATE関数を使ってみましょう。次のような売上データがあるとします。
| A列(商品名) | B列(売上) | |
|---|---|---|
| 2行目 | 商品A | 50,000 |
| 3行目 | 商品B | 30,000 |
| 4行目 | 商品C | #N/A |
| 5行目 | 商品D | 80,000 |
| 6行目 | 商品E | 25,000 |
B4セルには #N/A エラーが入っています。この列をSUM関数で合計すると、結果もエラーになります。
=SUM(B2:B6) → #N/A(エラーに巻き込まれる)
AGGREGATE関数ならエラーを除外して集計できます。
=AGGREGATE(9, 6, B2:B6) → 185,000
- 集計方法
9= 合計(SUM) - オプション
6= エラー値を除外
エラーの行をスキップして、50,000 + 30,000 + 80,000 + 25,000 = 185,000 が返ります。
エラー値を無視して平均・最大値を求める
集計方法の番号を変えるだけで、さまざまな集計に対応できます。
=AGGREGATE(1, 6, B2:B6) → 46,250(平均)
=AGGREGATE(4, 6, B2:B6) → 80,000(最大値)
=AGGREGATE(5, 6, B2:B6) → 25,000(最小値)
=AGGREGATE(2, 6, B2:B6) → 4(数値の個数)
どの集計もエラー行を自動的にスキップしてくれます。個別の関数を書き換えなくても、AGGREGATE関数1つで対応できるのは便利ですよね。
AGGREGATE関数の実践的な使い方・応用例
基本がわかったところで、実務で役立つ活用パターンを紹介します。
パターン1: VLOOKUP結果のエラーを無視して集計
VLOOKUP関数で別テーブルから値を取得すると、一致しないデータは #N/A エラーになります。このエラーが混在する列の集計はAGGREGATE関数の得意分野です。
たとえば、受注一覧のB列にVLOOKUP関数で単価を取得しているとします。
B2: =VLOOKUP(A2, 単価表!A:B, 2, FALSE) → 1,000
B3: =VLOOKUP(A3, 単価表!A:B, 2, FALSE) → #N/A
B4: =VLOOKUP(A4, 単価表!A:B, 2, FALSE) → 2,500
B5: =VLOOKUP(A5, 単価表!A:B, 2, FALSE) → 1,800
AGGREGATE関数で合計すれば、エラー行を除外して計算できます。
=AGGREGATE(9, 6, B2:B5) → 5,300
IFERROR関数でエラーを0に変換する方法もあります。ただ、データ量が多いと補助列の手間がかかりますよね。AGGREGATE関数なら元データを変更せずに集計できますよ。
パターン2: フィルター連動 + エラー除外の合わせ技
フィルター付きの表にエラーが混在しているケースです。オプション 7 を使えば、非表示行とエラー値の両方を除外できます。
=AGGREGATE(9, 7, C2:C100) → 非表示行もエラーも除外して合計
=AGGREGATE(1, 7, C2:C100) → 非表示行もエラーも除外して平均
=AGGREGATE(2, 7, C2:C100) → 非表示行もエラーも除外して件数
フィルターを切り替えるたびに値が更新されます。エラー処理の数式を追加する必要がないので、シートがすっきりしますよ。
パターン3: エラーを除外してN番目に大きい値を取得
AGGREGATE関数ならではの使い方です。LARGE関数やSMALL関数はエラーが混在すると動きません。集計方法14(LARGE)や15(SMALL)を使えば解決します。
=AGGREGATE(14, 6, B2:B100, 1) → エラーを除外して最大値
=AGGREGATE(14, 6, B2:B100, 2) → エラーを除外して2番目に大きい値
=AGGREGATE(14, 6, B2:B100, 3) → エラーを除外して3番目に大きい値
=AGGREGATE(15, 6, B2:B100, 1) → エラーを除外して最小値
第4引数の「k」で何番目の値を取得するか指定します。売上ランキングや成績順位の算出に使えます。
パターン4: 小計行がある表での安全な総合計
小計行にSUBTOTAL関数やAGGREGATE関数を使っている表で、総合計を求めるケースです。
| A列 | B列 |
|-------|--------|
| 営業部 | 100 |
| 営業部 | 200 |
| 小計 | =SUBTOTAL(9, B2:B3) → 300 |
| 総務部 | 150 |
| 小計 | =SUBTOTAL(9, B5:B5) → 150 |
| 総合計 | =AGGREGATE(9, 0, B2:B6) → 450 |
オプション 0 を指定すると、ネストされたSUBTOTAL関数やAGGREGATE関数を無視します。小計を二重カウントせずに正しい総合計が出せますよ。
SUBTOTAL関数との違い・使い分け
AGGREGATE関数とSUBTOTAL関数はどちらも「条件付き集計」ができる関数です。違いを比較してみましょう。
| 比較項目 | SUBTOTAL | AGGREGATE |
|---|---|---|
| 集計方法の数 | 11種類 | 19種類(MEDIAN・LARGE・SMALLなど追加) |
| エラー値の除外 | できない | できる(オプション6) |
| 非表示行の除外 | できる | できる |
| ネスト関数の無視 | できる | できる |
| 対応バージョン | Excel 2003〜 | Excel 2010〜 |
| 構文のシンプルさ | シンプル | やや複雑(オプション引数あり) |
使い分けの判断基準は明確です。
- エラーが混じらないデータの集計 → SUBTOTAL関数がシンプルでおすすめ
- エラーが混じる可能性があるデータの集計 → AGGREGATE関数(オプション6 or 7)
- LARGE・SMALL・MEDIANをエラー除外で使いたい → AGGREGATE関数一択
- Excel 2007以前の環境で使う可能性がある → SUBTOTAL関数
迷ったら「エラーがあればAGGREGATE、なければSUBTOTAL」と覚えるのが一番シンプルですよ。
GROUPBY関数やPIVOTBY関数と組み合わせれば、グループ集計でもエラー除外が可能です。Microsoft 365の方はあわせてチェックしてみてください。
よくあるエラーと対処法
AGGREGATE関数で困ったときの原因と対策をまとめました。
| エラー/症状 | 原因 | 対処法 |
|---|---|---|
| #VALUE! | 集計方法番号が範囲外(0や20以上) | 1〜19の範囲で指定する |
| #VALUE! | オプション番号が範囲外(8以上) | 0〜7の範囲で指定する |
| 結果が0 | 範囲に数値がない(文字列型の数値) | VALUE関数やデータクリーンアップで数値に変換する |
| #NUM! | LARGE・SMALLでk値がデータ数を超えている | k値をデータ数以下に設定する |
| 非表示行が除外されない | オプションが0または4になっている | オプション1・3・5・7のいずれかを使う |
集計方法番号・オプション番号の入力ミス
最も多いミスが番号の入力間違いです。
=AGGREGATE(0, 6, B2:B10) → #VALUE!(集計方法は1〜19)
=AGGREGATE(9, 8, B2:B10) → #VALUE!(オプションは0〜7)
AGGREGATE関数は引数が多い分、番号の指定ミスが起きやすくなります。入力時にExcelが表示するヒントを活用しましょう。
LARGE・SMALLのk値エラー
集計方法14(LARGE)や15(SMALL)を使うとき、第4引数のk値に注意が必要です。
=AGGREGATE(14, 6, B2:B5, 10) → #NUM!(データが4件しかない)
k値がデータの件数を超えると #NUM! エラーになります。エラー除外後の有効データ数を確認してからk値を指定してください。
配列引数での制限
AGGREGATE関数には1つ注意点があります。参照1に計算式を含む配列を渡す場合、非表示行の除外が効かないことがあります。
=AGGREGATE(9, 5, A2:A10*B2:B10) → 非表示行が除外されない場合がある
この制限はMicrosoft公式ドキュメントにも記載されています。配列計算と非表示行除外を同時に使いたい場合は、補助列を活用するのが確実ですよ。
まとめ
ExcelのAGGREGATE関数のポイントをおさらいしましょう。
| 項目 | 内容 |
|---|---|
| 読み方 | アグリゲート関数 |
| 役割 | エラー値・非表示行を除外した集計(19種類対応) |
| 構文 | =AGGREGATE(集計方法, オプション, 参照1, [参照2]) |
| よく使う組み合わせ | =AGGREGATE(9, 6, 範囲) (エラー除外して合計) |
| SUBTOTALとの違い | エラー除外の可否、集計方法の種類数 |
| 対応バージョン | Excel 2010以降 |
まずは =AGGREGATE(9, 6, 範囲) でエラーを除外した合計から試してみてください。エラーが混在するデータでもスムーズに集計できるのを実感できますよ。
