dポイントプレゼントキャンペーン実施中!

エクセルでフィルター機能を使用して合計金額や件数を確認する式で=SUBTOTAL(3,A5:A50)や=SUBTOTAL(9,A5:A50)あります。
エクセルで作成した表でA列に営業所名、B列に得意先名、C列に売上げを入れた表があります。返品があった場合はC列にマイナスが発生します。
営業所毎にフィルターをかけた場合、マイナスの得意先がカウントされないようにするには、どのように数式を入れたらよいのでしょうか?

A 回答 (4件)

フィルタをかける目的は、選択して、該当する明細を見たいということがあります。

ですので下記は目的に合致するかわからないのですが
本来の条件に戻り
A列がa,B列が正の条件で、集計する
=SUMPRODUCT((B2:B10>0)*(A2:A10="a")*(B2:B10))

結果
Xy
a1
a3
a-3
a4
がフィルタ結果場合で
8です。
ーー
私は#1の方のおっしゃることが最もと思いますが。
ーー
>マイナスの得意先がカウントされないようにするには
はどこまで考えて質問しているのか良くわからない。
A  2
A  3
A -6
B  3
B  2
B -4
のときAは合計はー1、Bは合計1であるが、マイナスでないBだけ表示とか合計しろということなら、再質問してください。
    • good
    • 1

こんばんは。



>マイナスの得意先がカウントされないようにするには、
得意先ごとの合計なら、当然、マイナス売上げも計上するのではありませんか?
余計なお世話ですね。(^^;

そのままで計算するには、補助列を設けるしかないのではないでしょうか?

= If(C2<0,C2, "")

というような数式を置いて、フィルハンドルでコピーをします。そうすると、数字として出てくるのは、マイナスのみになります。そして、やはり、表示しているものだけが出てきますね。

た上記の数式をF列だすれば、その集計を、SUBTOTAL関数で取ります。

=SUBTOTAL(2,F5:F50)  ←件数を出すなら、ここでの引数は、3 ではなくて、2 ですから、間違えないでください。

=SUBTOTAL(9,F5:F50)

そして、C列の合計に(マイナス値を)足せばよいです。
    • good
    • 0

1)A列とC列にオートフィルタをかけて、A列は営業所、C列はオプションで「0より大きい」を条件で絞り込む



2)表示されている行の0以上のセルだけカウント、合計するユーザ定義関数を用いる。ちょっとお遊びで作ってみました。
以下のマクロをALT+F11でVBE画面を開き、左上のVBA Projectでシート名を右クリックし「挿入」→「標準モジュール」で表示される画面に貼り付けて下さい。マクロの実行はワークシート画面に戻って
 =irrSubtotal(2,A5:A50)
 =irrSubtotal(3,A5:A50)
 =irrSubtotal(9,A5:A50)
のいずれかの式を入力してみてください。COUNTA関数相当の計算方法は多少意図するものとは違うかもしれません。そのときは補足して下さい

Function irrSubtotal(ByVal fnc As Integer, ByVal rng As Range) As Single
'この関数は0以上のセルを対象にします。
Dim r As Range
For Each r In rng
  If r.EntireRow.Hidden = False Then
    Select Case fnc
      Case Is = 2
        If IsNumeric(r.Value) And r.Value >= 0 Then
          irrSubtotal = irrSubtotal + 1
        End If
      Case Is = 3
        If r.HasFormula Or r.Value <> "" Then
          If IsNumeric(r.Value) And r.Value < 0 Then
          Else
            irrSubtotal = irrSubtotal + 1
          End If
        End If
      Case Is = 9
        If IsNumeric(r.Value) And r.Value >= 0 Then
          irrSubtotal = irrSubtotal + r.Value
        End If
      Case Else
        irrSubtotal = ""
    End Select
  End If
Next r
End Function
    • good
    • 0

あらかじめ、マイナスを非表示にすればよいのでは?

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!