ここから本文です

小計を合算し総計を算出するマクロについて

umi********さん

2016/11/1303:24:27

小計を合算し総計を算出するマクロについて

下記やりとりを参考にさせて頂き、(http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1444918209
各カテゴリー毎の合計は算出出来たのですが、
総計(3600)を算出するVBAを教えて頂きたくお願い致します。

Dim gk As Variant
Dim i As Long

i = 2
Do While Cells(i, 1).Value <> ""
gk = gk + Cells(i, 2).Value
If Cells(i, 2).Value = "" Then '★1
Cells(i, 2).Value = gk
gk = 0
End If
i = i + 1
Loop
※この後にどのようなものを記載すればよいのか教えてください。
宜しくお願い致します。

Do While Cells,Dim i As Long,If Cells,Value,総計,End If,Cells

この質問は、活躍中のチエリアン・専門家に回答をリクエストしました。

閲覧数:
140
回答数:
5
お礼:
100枚

違反報告

ベストアンサーに選ばれた回答

hel********さん

2016/11/1308:13:09

質問のコードを改良すると以下のようにすれば総合計が求められます。

Sub Test()
Dim gk As Long, Total As Long, i As Long
i = 2
Do While Cells(i, 1).Value <> ""
gk = gk + Cells(i, 2).Value
If Cells(i, 2).Value = "" Then
Cells(i, 2).Value = gk
If Cells(i, 1) = "総合計" Then Exit Do
Total = Total + gk
gk = 0
End If
i = i + 1
Loop
Range("B" & i) = Total
End Sub

質問した人からのコメント

2016/11/19 09:46:44

出来ました!ずっと悩んでいたのでスッキリです!ありがとうございました!

ベストアンサー以外の回答

1〜4件/4件中

並び替え:回答日時の
新しい順
|古い順

prs********さん

2016/11/1309:01:28

こんな感じです。・・・・・・・・・・・・・・・・・・

Sub test()
Dim temp, a, b, c As Long
temp = Range("A" & Rows.Count).End(xlUp).Row
For a = 2 To temp
b = b + Cells(a, 2)
If Right(Range("A" & a).Value, 2) = "合計" Then
Cells(a, 2) = b
Cells(a, 2).Interior.ColorIndex = 8
c = c + b
b = 0
End If
Next
Cells(a - 1, 2) = c
Cells(a - 1, 2).Interior.ColorIndex = 6
End Sub

こんな感じです。・・・・・・・・・・・・・・・・・・

Sub test()
Dim temp, a, b,...

msk********さん

2016/11/1308:01:08

合計を1/2すればよいのでLoop文の直後にこんな感じでしょうか。


Loop
If i > 2 Then
Cells(i, 1) = "総合計"
Cells(i, 2) = Application.Sum(Cells(2, 2).Resize(i - 2)) / 2
End If

kik********さん

リクエストマッチ

2016/11/1307:58:37

以下でどうなりますか

変数 gk2 を設け、gk を加算していきます
空白が連続( gk が 0 )した時には総合計の所なんでしょう・・・


Dim gk As Variant, gk2 As Variant
Dim i As Long

i = 2
Do While Cells(i, 1).Value <> ""
   gk = gk + Cells(i, 2).Value
   If Cells(i, 2).Value = "" Then
      If (gk <> 0) Then
         Cells(i, 2).Value = gk
         gk2 = gk2 + gk
         gk = 0
      Else
         Cells(i, 2).Value = gk2
      End If
   End If
   i = i + 1
Loop

プロフィール画像

カテゴリマスター

tai********さん

2016/11/1307:36:34

そのコードだと条件が合計行が空白、ということなのでデータ表が変わるたび合計行の値の削除をすることになるのでは?

というかあまりVBAには適さないテーマかもしれません。(数式を入れれば済むことなので)

小計を計算対象から外して合計を出す関数はSubtotal関数です。なのでマクロでこの数式を入れます。



Sub test()
Dim i As Long, j As Long
i = 2: j = 2
Do While Cells(i, 1).Value <> ""
If Cells(j, 1) Like "*合計" Then
Cells(j, 2) = "=Subtotal(9,B" & i & ":B" & j - 1 & ")"
i = j + 1
End If
j = j + 1
Loop
Cells(j - 1, 2) = "=Subtotal(9,B2:B" & j - 2 & ")"
End Sub

そのコードだと条件が合計行が空白、ということなのでデータ表が変わるたび合計行の値の削除をすることになるのでは?...

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる