オートフィルタで抽出した列とは別の列を計算したい

オートフィルタで抽出した結果そのままを計算したい場合はSUBTOTAL関数を使えば簡単にできます。
しかし、抽出した結果全てを計算対象にするのではなく、表示された結果の中から○○のところだけを計算したい、という場合です。




下図で見るとB列の「テスト」が「受講済み」のものをオートフィルタで抽出しています。
この時にC列の「判定」の「○」の数だけ数えたい場合。
「判定」の「○」でさらに絞り込めばよい、ということではなく、「受講済み」の結果の確認も必要なので、これを表示させたまま、さらに「○」の数を数えたい、という場合です。
0723_1

以下の式で計算できます。
値は「3」が返ります。

=SUMPRODUCT((SUBTOTAL(3,INDIRECT("C"&ROW((C2:C13))))*(C2:C13="○")))

「「判定」が「○」だけの「点数」の合計も出したい」という場合は以下のように計算できます。
値は「27」が返ります。
前半の式は一緒で最後に合計を計算したいセル範囲を付け足すだけです。
カッコの数に注意です。

=SUMPRODUCT((SUBTOTAL(3,INDIRECT("C"&ROW((C2:C13))))*(C2:C13="○")*(D2:D13)))

・SUBTOTAL 集計方法は「3」で指定しているのでCOUNTAです。
・SUMPRODUCT 参照範囲の積を合計した結果を返す。
・INDIRECT 指定された文字列をセルの参照として返します。

SUMPRODUCTの中で、SUBTOTALで抽出した結果から、INDIRECTで「("C"&ROW((C2:C13))))*(C2:C13="○")」を指定することによって、参照範囲内で「○」のある位置を探して該当する行を返すことができ、それを集計することができるようになります。

以上です。