• ベストアンサー

エクセル ユーザーフォームで数値の合計を表示するには

いつもお世話になります。 列A=大分類,列B=中分類,列C=小分類,列D=売上金額の表があります。 ユーザーフォームで、列Dの売上金額の合計や、各分類別の合計数値を表示させたいのですが、そのようなことは可能でしょうか? 以上宜しくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

お話がよく見えてきませんが、 ○列A=大分類,列B=中分類,列C=小分類,列D=売上金額の表があります。 ということですが、結局は、種類別の「売上合計」を出すのですか? 単なる、ワークシート関数の式の組み立てではないのしょうか? SUM でも、SUMPRODUCTでも、配列の確定の必要がありません。  With Sheet1   .Select   With .Range("A1", .Range("A65536").End(xlUp))    MsgBox Application.Evaluate("SUM(IF(" & .Address & "=1," & _    .Offset(, 3).Address & ",0))")   End With  End With ここの部分は、もし、はっきりしているなら、 "SUM(IF(" & .Address & "=1," & .Offset(, 3).Address & ",0))" "SUM(IF(A2:A200=1,B2:B200,0)" でも構いません。ただし、列を指定しないでくださいね。(例:A:Aというように全体を指定する) "SUMPRODUCT((A1:A200=1)*(D1:D200))" Dim myValue As Variant  With Sheet1    .Select    myValue = Application.Evaluate("SUMPRODUCT((A1:A200=1)*(D1:D200))")    If Not IsError(myValue) Then      MsgBox myValue    Else      MsgBox "エラーが出ています", 16    End If  End With このようにして、エラー処理します。

7-samurai
質問者

お礼

ありがとうございました。 何分、知識不足なもので、解決までに非常に時間がかかりましたが、いただきましたお答えで作成できました。

その他の回答 (1)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

合計値を出す場合、ワークシート関数を使ったほうが、エラーを吐かなくて便利です。 TextBox に出す(またはLabelは、Caption)として、 サンプル: ボタンとかに以下を入れます。 Dim a As Double, b As Double, c As Double, d As Double With Sheet1  With .Range("A1", .Range("A65536").End(xlUp))    a = Application.Sum(.Value)    If Not IsError(a) Then TextBox1.Value = Format$(a, "#,##0")  End With   With .Range("B1", .Range("B65536").End(xlUp))    b = Application.Sum(.Value)    If Not IsError(b) Then TextBox2.Value = Format$(b, "#,##0")   End With   With .Range("C1", .Range("C65536").End(xlUp))    c = Application.Sum(.Value)    If Not IsError(c) Then TextBox3.Value = Format$(c, "#,##0")   End With   With .Range("D1", .Range("DC65536").End(xlUp))    d = Application.Sum(.Value)    If Not IsError(d) Then TextBox4.Value = Format$(d, "#,##0")   End With End With

7-samurai
質問者

補足

早速ありがとうございます。おかげさまで問題解決しました・・・と申し上げたい所なのですが、すみません。私の質問の仕方が悪く、正確には、 大分類、中分類、小分類にそれぞれ2つの分類コードがあり、 ・全体の合計 ・大分類2種の合計 ・中分類2×2=4種の合計 ・小分類2×2×2=8種の合計 計15コの合計をそれぞれ出したかったのです。 SUMPRODUCT関数のような形で導き出す必要があるのですが、こちらは可能でしょうか?