AGGREGATE 関数は、合計・平均・最大などを、エラーや非表示の行を無視して計算できる関数です。表に #DIV/0! や #N/A が 1 つでもあると、SUM や AVERAGE はエラーになりますが、=AGGREGATE(9,6,B2:B7) と書くとエラーを飛ばして合計できます。
この記事では、AGGREGATE の番号の選び方と、エラーを無視した集計・順位・条件付きの最大の出し方を、実際の Excel で確かめた結果で説明します。
AGGREGATE 関数の書き方
=AGGREGATE(集計方法, オプション, 範囲, [順位])
| 引数 | 意味 |
|---|---|
| 集計方法 | 1=平均、2=数値の個数、4=最大、5=最小、9=合計、14=大きいほうから○番目、15=小さいほうから○番目 など |
| オプション | 6=エラーを無視、5=非表示の行を無視、7=両方を無視、4=何も無視しない |
| 範囲 | 集計する範囲 |
| 順位(14・15 のとき) | 何番目か |
よく使うのは オプション 6(エラーを無視)です。集計方法の番号は 1〜19 まであり、式を入力するときに一覧が出るので、そこから選べます。
1. エラーを無視して合計する
B3 は #DIV/0!、B5 は #N/A です。集計方法 9(合計)、オプション 6(エラーを無視)で合計します。
=AGGREGATE(9,6,B2:B7)

結果は 4,100 でした(1,200+800+1,500+600)。同じ範囲を SUM で合計すると #DIV/0! になります(下の検証)。
2. エラーを無視して平均する
集計方法を 1(平均)にします。
=AGGREGATE(1,6,B2:B7)

結果は 1,025 で、エラーの 2 つを除いた 4 店の平均です。
3. 2 番目に大きい値を出す
集計方法 14 は LARGE と同じで、4 つ目に順位を入れます。
=AGGREGATE(14,6,B2:B7,2)

結果は 1,200 でした。LARGE 関数ではエラーがあると #DIV/0! になりますが、AGGREGATE なら計算できます。
4. 条件に合う中での最大(1,000 未満で最大)
集計方法 14・15 は、範囲のところに計算式を書けます。B2:B7/(B2:B7<1000) は、条件に合わない行が 0 で割ってエラーになるので、オプション 6 でそれを無視すると「条件に合う中での最大」になります。
=AGGREGATE(14,6,B2:B7/(B2:B7<1000),1)

結果は 800 でした(1,000 未満は 800 と 600)。MAXIFS が使えない古い Excel でも、この形なら条件付きの最大が出せます。
【実機で検証】AGGREGATE でつまずくところ

| ためしたこと | 式 | 結果 |
|---|---|---|
| SUM でそのまま合計 | =SUM(AGGREGATE!B2:B7) | #DIV/0! |
| AGGREGATE(9,6)で合計 | =AGGREGATE(9,6,AGGREGATE!B2:B7) | 4,100 |
| オプション 4(何も無視しない) | =AGGREGATE(9,4,AGGREGATE!B2:B7) | #DIV/0! |
| 非表示の 14 行目がある A12:A15 を SUM | =SUM(A12:A15) | 100 |
| A12:A15 を AGGREGATE(9,5) | =AGGREGATE(9,5,A12:A15) | 70 |
| 合計(9)の範囲に計算式を書くと | =AGGREGATE(9,6,AGGREGATE!B2:B7*1) | #VALUE! |
エラーがまざった範囲を SUM で合計すると #DIV/0! になりました。AGGREGATE(9,6)なら 4,100 です。オプションを 4(何も無視しない)にすると #DIV/0! になるので、エラーを無視するなら 6 を選びます。
14 行目(30)を非表示にした A12:A15 は、SUM だと 100、AGGREGATE のオプション 5(非表示の行を無視)だと 70 でした。
合計(9)や平均(1)の範囲に計算式を書くと #VALUE! になりました。範囲に計算式を書けるのは、集計方法 14〜19(LARGE・SMALL など)だけです。
よくある質問
SUBTOTAL とのちがいは?
SUBTOTAL も非表示の行を無視できますが、エラーは無視できません。エラーをよけたいときは AGGREGATE を使います。SUBTOTAL は SUBTOTAL関数の使い方で説明しています。
IFERROR と組み合わせる方法とどちらがよい?
=SUM(IFERROR(B2:B7,0)) でもエラーを 0 にして合計できます。AGGREGATE は番号を選ぶだけで、平均や順位にも同じ書き方で使えるのが便利です。
エラーそのものを直したいときは?
エラーの原因を直すのが本来の対処です。エラーの種類と直し方は エラー値の一覧と直し方で説明しています。

コメント