Excel関数 逆引き集 | エラーを除外して集計 → AGGREGATE

Excel
スポンサーリンク

概要

「一部のセルがエラーだけど、それを無視して合計だけ出したい」
「#DIV/0! や #N/A が混ざっていても、平均や最大値を普通に計算したい」

こういうときに、IFERROR で一つひとつ式を直さなくても
一発で「エラーを除外して集計」してくれるのが AGGREGATE 関数です。

AGGREGATE は
「どの集計関数を使うか(合計・平均・最大など)」
「何を無視するか(エラー、非表示行など)」
を指定できる高機能な集計関数です。
ここでは「エラーを除外して集計」というテーマに絞って、やさしく解説します。


AGGREGATE の基本

基本の書式

AGGREGATE には2つの書き方がありますが、
ここでは一番よく使う「範囲に対する集計」の形だけに絞って説明します。

書式は次のとおりです。

=AGGREGATE(集計の種類, オプション, 範囲)

集計の種類
どの関数で集計するかを番号で指定します。
代表的なものだけ挙げると、次のような対応です。

1 平均(AVERAGE)
2 個数(COUNT)
3 個数(空白以外)(COUNTA)
4 最大値(MAX)
5 最小値(MIN)
9 合計(SUM)

オプション
「何を無視するか」を指定します。
エラーを無視したいときは
6 エラー値を無視
7 非表示行とエラー値を無視
を主に使います。

範囲
集計したいセル範囲です。
例:A2:A10 など。


「エラーを無視する」という指定

エラーを除外して集計したいときに一番大事なのは、オプションです。

エラーだけ無視したい
オプションに 6 を指定します。
例:
=AGGREGATE(9, 6, A2:A10)

非表示行もエラーも両方無視したい
オプションに 7 を指定します。
例:
=AGGREGATE(9, 7, A2:A10)

ひとまず「エラー除外」だけなら、
オプションは 6 と覚えておけば大丈夫です。


エラーを除外して合計する

SUM の代わりに AGGREGATE を使う

例えば、A2:A10 に数値が入っていて、
一部に #DIV/0! や #N/A が混ざっているとします。

普通に合計すると、こうなります。

=SUM(A2:A10)   ' エラーが1つでもあると式全体がエラー

AGGREGATE を使って「エラーを無視して合計」するには、
集計の種類に 9(SUM)、オプションに 6(エラーを無視)を指定します。

=AGGREGATE(9, 6, A2:A10)

動きはこうです。

正常な数値セル
そのまま合計に含める
エラーのセル
存在しないものとして無視する

IFERROR で一つずつ直さなくても、
この 1 式で範囲内のエラーをまとめてスキップできます。


エラーを除外して平均・最大・最小を出す

平均(AVERAGE)の代わりに

A2:A10 の平均を出したいが、
一部にエラーが混ざっている場合。

普通の AVERAGE だと、エラーがあると全体がエラーになります。

=AVERAGE(A2:A10)

AGGREGATE で「エラーを除外した平均」を取りたいときは
集計の種類に 1(AVERAGE)を指定します。

=AGGREGATE(1, 6, A2:A10)

これで
数値だけで平均
エラーセルは完全に無視
という動きになります。


最大値・最小値のとき

最大値(MAX)
集計の種類 4

=AGGREGATE(4, 6, A2:A10)   ' エラーを除外した最大値

最小値(MIN)
集計の種類 5

=AGGREGATE(5, 6, A2:A10)   ' エラーを除外した最小値

MAX や MIN でも、エラーが1つ紛れただけで式全体がエラーになりますが、
AGGREGATE ならエラーをスキップしてくれます。


エラーを除外しながら「n番目の大きさ/小ささ」を求める

LARGE / SMALL 相当の使い方

AGGREGATE は、LARGE / SMALL のような
「n番目に大きい値」「n番目に小さい値」も計算できます。

n番目に大きい値(LARGE 相当)は集計の種類 14
n番目に小さい値(SMALL 相当)は集計の種類 15

書式は次のようになります。

=AGGREGATE(14, 6, A2:A10, k)   ' エラーを除外して k 番目に大きい値
=AGGREGATE(15, 6, A2:A10, k)   ' エラーを除外して k 番目に小さい値

例えば、「エラーを無視して A2:A10 の中で 2番目に大きい値」を求めたいなら、

=AGGREGATE(14, 6, A2:A10, 2)

と書きます。

エラーが混ざっていても、
「数値だけ」を対象に順位付けできるのがポイントです。


AGGREGATE を使うときの考え方と注意点

まずは「普通の関数 → うまく動かない → AGGREGATEに置き換える」

実務の流れとしては、次のように考えると使いやすいです。

まず SUM や AVERAGE、MAX など、普通の関数で書いてみる
エラーが混ざっていて式全体がエラーになる
そのとき初めて、同じ処理を AGGREGATE に置き換える

具体的には、次の対応を覚えておくと便利です。

SUM(A2:A10) がエラーになる → AGGREGATE(9, 6, A2:A10)
AVERAGE(A2:A10) がエラーになる → AGGREGATE(1, 6, A2:A10)
MAX(A2:A10) がエラーになる → AGGREGATE(4, 6, A2:A10)
MIN(A2:A10) がエラーになる → AGGREGATE(5, 6, A2:A10)

全部暗記する必要はなく、
「1=平均、4=最大、5=最小、9=合計」だけでもまずは十分です。


「エラーを 0 として扱う」のとは少し違う

IFERROR(式, 0) でエラーを 0 にする方法と、
AGGREGATE でエラーを除外する方法は、似ているようで動きが違います。

IFERROR(式, 0)
エラーだったセルが 0 の値として存在するイメージ。
その後の SUM などには 0 として含まれる。

AGGREGATE(…, 6, 範囲)
エラーのセルは「無かったこと」になり、
集計から完全に外される。

「エラーを 0 と見なしたい」のか
「エラーは数値として数えたくない」のか
意図に応じて使い分けられるとベストです。


例題

問題1

A2:A10 の中に数値とエラーが混在しています。
エラーを無視して「合計」を計算したいとき、AGGREGATE を使った式を書いてください。
(ヒント:合計=集計の種類 9、エラー無視=オプション 6)

=AGGREGATE(9, 6, A2:A10)

問題2

A2:A10 の中に数値とエラーが混在しています。
エラーを除外して「平均」を求めたいときの AGGREGATE の式を書いてください。
(ヒント:平均=集計の種類 1)

=AGGREGATE(1, 6, A2:A10)

問題3

A2:A10 の中に数値とエラーが混在しています。
エラーを除外して「最大値」を求める AGGREGATE の式を書いてください。
(ヒント:最大=集計の種類 4)

=AGGREGATE(4, 6, A2:A10)

問題4

A2:A10 の中に数値とエラーが混在しています。
エラーを除外して「2番目に大きい値」を求める AGGREGATE の式を書いてください。
(ヒント:LARGE 相当=集計の種類 14、k=2)

=AGGREGATE(14, 6, A2:A10, 2)

問題5

A2:A10 の中に数値とエラーが混在しており、一部の行は非表示になっています。
エラーと「非表示行」の両方を除外して合計したいときの式を書いてください。
(ヒント:合計=9、非表示とエラーを無視=オプション 7)

=AGGREGATE(9, 7, A2:A10)

まとめ

AGGREGATE は、
「エラーが混ざっていても集計を止めたくない」
「エラーや非表示行を除外したうえで合計・平均を取りたい」
というときの強力な味方です。

型としては、まずこの形を押さえておけば十分です。

=AGGREGATE(9, 6, 範囲)   ' エラーを除外した合計
=AGGREGATE(1, 6, 範囲)   ' エラーを除外した平均

あなたの表の中で「エラーが混ざって SUM や AVERAGE が壊れている列」があれば、
そこを AGGREGATE に差し替えてみてください。
「エラーを除外して集計する」感覚が、一気につかめるはずです。

タイトルとURLをコピーしました