• ベストアンサー

VBA(合計)

A列に以下のような正の数と負の数が1から305行まであり、 正の数だけを合計したものと負の数だけを合計するVBEをできるだけやさしく教えてください。 A列 1 -2 3 -5 1 2 -6

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

  • ベストアンサー
noname#123709
noname#123709
回答No.1

305行までとして下記のような感じでよいのではないでしょうか? ちなみに正の数字の合計をB1のセルに表示、負の数字の合計をB2のセルに 表示させています。 要は0より大きいか小さいかの判断で305行まで繰返しの処理をさせればよい かと思います。 Sub 集計() Dim i As Long, j As Long Dim Myrow As Long i = 0 j = 0 For Myrow = 1 To 305 If Cells(Myrow, 1) > 0 Then i = i + Cells(Myrow, 1).Value Else j = j + Cells(Myrow, 1).Value End If Next Myrow Range("B1").Value = i Range("B2").Value = j End Sub

すると、全ての回答が全文表示されます。

その他の回答 (2)

回答No.3

範囲はA1~A305特定にしておりますが、#1さんが#2で述べているように、範囲を可変にした方が汎用的になると思います。 合計は、EXCELの標準関数[SumIf]を呼び込むことで、一発で算出できます。 Sub Test()   Dim lngTotal正 As Long   Dim lngTotal負 As Long   Dim rng範囲   As Range      '範囲設定   With Worksheets(1)     Set rng範囲 = .Range(.Range("A1"), .Range("A305"))     'A列全体なら     'Set rng範囲 = .Range("A:A")   End With      '合計算出   lngTotal正 = WorksheetFunction.SumIf(rng範囲, ">0", rng範囲)  '正用   lngTotal負 = WorksheetFunction.SumIf(rng範囲, "<0", rng範囲)  '負用 End Sub

すると、全ての回答が全文表示されます。
noname#123709
noname#123709
回答No.2

#1です。 私の提示したものはA列の範囲に文字データ等が入っている場合はエラーと なりますのでご注意下さい。回避されるのであれば、現在の条件プラス数値 データの場合のみという条件を入れる必要があるでしょう。 最終行が不定の場合は「Range("A65536").End (xlUp)」で最終行を得る 必要もあるかと思います。

すると、全ての回答が全文表示されます。

関連するQ&A