出版

非表示の値と表示値の両方を評価する場合を除き、SUM() 関数を使ってフィルターされたリストの合計を計算することはできません。フィルターの条件を満たす値のみを合計する方法は次のとおりです。
フィルターは強力で使いやすい機能です。フィルターを使えば、必要なレコードだけを素早く絞り込むことができます。しかし、フィルターされたレコードの合計を求めるのは別の話です。SUM()関数を使ってみるのも良いでしょう。きっと驚くような結果が得られるでしょう。
下の図はフィルター処理されたリストを示しています。左側の行番号から、多くの行が非表示になっていることがわかります。(フィルターの実際の動作についてはここでは割愛します。詳細については、「Excelの高度なフィルターでAND演算子とOR演算子を使用する方法」をご覧ください。)
次の図は、フィルターされた値を合計しようとしたときに何が起こるかを示しています。結果が正しくないことはすぐにわかります。値が大きすぎますが、なぜでしょうか?SUM()関数は、フィルターされた値だけでなく、範囲D14:D64内のすべての値を評価します。SUM()関数は、参照範囲からフィルターされた値を除外しようとしていることを認識できません。
解決策は想像以上に簡単です!「オートSUM」をクリックするだけです。ExcelはSUM()関数の代わりにSUBTOTAL()関数を自動的に入力します。この関数はリスト全体(D6:D82)を参照しますが、フィルターされた値のみを評価します。
今すぐ自動的にサインアップしましょう!
SUBTOTAL()について
SUBTOTAL() 関数は列 D の値のリスト全体を参照しますが、評価するのはフィルターされたリスト内の値のみです。最初の引数が 9 であるためだと思われるかもしれません。この引数は、参照されている値を合計するよう Excel に指示します。次の表は、この引数に指定できる値の一覧です。
隠れた価値を評価する | 非表示の値を無視する | 関数 |
1 | 101 | 平均() |
2 | 102 | カウント() |
3 | 103 | COUNTA() |
4 | 104 | 最大() |
5 | 105 | 最小値() |
6 | 106 | 製品() |
7 | 107 | 標準偏差() |
8 | 108 | STDEVP() |
9 | 109 | 和() |
10 | 110 | 変数() |
11 | 111 | VARP() |
ここまで読んで、「ちょっと待って!値9は非表示の値を評価するはずなのに、正しい引数は109じゃないの?」と思うかもしれません。もっともな質問で、説明もできますが、あまり良い説明ではないと思います。SUBTOTAL()は、指定した引数に関わらず、フィルターの結果に含まれない行を無視します。これは奇妙な動作で、この関数について知っておくべき細かい点の一つです。9と109のどちらを使用しても、SUBTOTAL()は表示されている値のみを評価し、非表示の値は評価しません。

スーザン・ハーキンス
スーザン・セールス・ハーキンスは、デスクトップソリューションを専門とするITコンサルタントです。以前は、世界最大の技術雑誌出版社であるコブ・グループの編集長を務めていました。