Excelにはオートフィルタという便利機能がある。表題に表示されるオートフィルタ矢印をクリックして、リストから目的のデータを選択するだけで、簡単にデータの絞り込みが行えるスグレモノだ。

 オートフィルタを設定するには、リストの中にアクティブセルを移動して、「ホーム」タブ「編集」グループにある「並べ替えとフィルタ」をクリックし、「フィルタ」を選ぶ(図1)。図2は簡単なデータベースにオートフィルタを設定したところだ。セルC10には「金額」列を合計するために「=SUM(C2:C8)」という計算式を入れてある。

図1 リストを絞り込むのに便利な「オートフィルタ」機能
図2 リストにオートフィルタを設定したところ。セルC10では「金額」列の数値をSUM関数で合計している

 このリストで、住所が「東京」のデータだけを表示してみよう。それには、オートフィルタ矢印をクリックして「東京」を選択すればいい。しかし、よく見るとリストが「東京」で絞り込まれていてもセルC10の結果は変わらない。オートフィルタの絞り込みとは関係なく、セル範囲C2:C8を合計してしまっている(図3)。

図3 オートフィルタでリストを絞り込んでも、SUM関数の計算結果は変わらない。非表示のセルも計算の対象にしているからだ

 オートフィルタは、条件に一致しない行を非表示にする機能だ。だがSUM関数は、非表示のセルであっても計算の対象にしてしまう。このように、オートフィルタで抽出した結果だけを計算したいときは、SUM関数ではなくSUBTOTAL関数を使おう(図4)。

図4 非表示セルを計算から除外するにはSUBTOTAL関数を使う。最初の引数に指定した「9」は、次のセル範囲を合計するという指示になる

 SUBTOTAL関数は、非表示のデータを計算対象から除外してさまざまな計算を行うマルチ関数だ。計算の種類は、第1引数で指定する。セルC10に入力した「SUBTOTAL(9,C2:C8)」は、指定した範囲の合計を計算せよという意味になる。