• 締切済み

フィルターかかってる時のSUMIF関数

フィルターかかってる部分だけのSUMIFで 集計したいのがあるのですが普通にやるとフィルターかかってない部分まで集計されてしまいます。 何か良い式がありますか?

みんなの回答

noname#52504
noname#52504
回答No.3

★まず、作業列でSUBTOTAL(3)関数を使い、"表示されているか否か"をマークします。 1行目  :見出行 2~1000行:データ A列   :コード列や氏名列など“必ずデータが入力される、空白セルのない列” Z列   :作業列 とすると、 Z2セル :=SUBTOTAL(3,A2) として、(フィルタを解除した状態で)末行までフィル。 フィルタした状態で表示されるセルには1,表示されないセルには0が入ります。 (もちろん見た目では判りませんが) ★次に、「表示されてて、しかも、指定した条件を満たす行」について合計します。 例えば、 SUMIFなら、 任意のセル:=SUMIF(B2:B1000,">300",C2:C1000) と記述するような場合、 つまり、 検索範囲:B列 検索条件:">300" 合計範囲:C列 であれば、 任意のセル:=SUM(IF(Z2:Z1000=1,IF(B2:B1000>300,C2:C1000,0),0)) として、配列数式として入力(Ctrl+Shift+Enter)します。 「2~1000行目について、IF(Z?=1,IF(B?>300,C?,0),0) の結果を足し上げよ」 という式です。 ・AND関数,OR関数は使えませんから注意してください ・SUMIFではなく、SUM(IFです。念のため。 検索条件:D列 とする場合も同様に、 任意のセル:=SUM(IF(Z2:Z1000=1,IF(B2:B1000=D2:D1000,C2:C1000,0),0)) として、配列数式として入力(Ctrl+Shift+Enter)します。 「2~1000行目について、IF(Z?=1,IF(B?=D?,C?,0),0) の結果を足し上げよ」 ですね。 なお、このサイトでは、複数条件での集計は 「配列数式ではなくSUMPRODUCT関数で行う」 「入れ子のIF文ではなく、算術演算子による論理演算を行う」 のが一般的な方法のようです。 SUMPRODUCT、論理演算の例については、過去にたくさん記述がありますので、そちらをご参考ください。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

質問は2つの意味に取れて、あいまいです。 (1)フィルターで、絞られて、画面に出ている行全てのある列の数値の合計の場合 =SUBTOTAL(),C1:C6) (2)フィルターで、絞られて、今画面に出ている行の中で、さらに別列で条件を掛けて、合計を求める場合 2条件(以上)の抜き出し合計の問題になるので、フィルタ解除した状態を頭において、SUMPRODUCT関数で複数条件による抜き出し合計を計算する。SUBTOTALIF的な関数は無い。 SUMPRODUCT関数の利用は過去質問にイヤというほど沢山あり、略。

  • maron--5
  • ベストアンサー率36% (321/877)
回答No.1

◆抽出後の合計とついでに件数と連番      A      B      C 1  番号 ▼  区分 ▼  数量 ▼ 2     1      a      1 3     2      a      5 4     3      b      3 5     4      c      8 6     5      c      6 7     6      a      2 8     7      b      7 9     8      c      4 10     9      b      9 11           9      45     ↓↓  区分を「b」でフィルター後     A       B      C 1  番号 ▼  区分 ▼  数量 ▼ 4     1      b      3 8     2      b      7 10     3      b      9 11           3      19 合計 C11=SUBTOTAL(9,C2:C11) 件数 B11=SUBTOTAL(3,B2:B10) 連番 C2=SUBTOTAL(3,B$1:B1)  ※C10まで下にコピー

関連するQ&A

専門家に質問してみよう