アプリ版:「スタンプのみでお礼する」機能のリリースについて

こんにちは。

商品コード 名称  金額      業者
100    PC1  10,000  ア
110    PC2  10,000  ア
200    PC3  20,000  イ
300    PC4  30,000  イ

上記のようなデータがシート1にあるとして、業者毎に他のシートにデータを転送するまでは何とか無事にマクロを組むことが出来ました。

この後、業者毎に分けたそれぞれのシートの最終行で金額の集計をしたいのです。

例えばシート2の業者アのデータであれば↓

商品コード 名称  金額      業者
100    PC1  10,000  ア
110    PC2  10,000  ア
総計          20,000
 
同じようにシート3の業者イのデータ、シート4の業者ウのデータ・・・を集計したいのですが、どの様なマクロを組めばそれぞれのシートの最終行で集計が表示されるのでしょうか?

ちなみに、商品数、業者数とも変動するため、固定値が入れられません。
本やインターネット等でいろいろ調べてみたのですが、分かりませんでした。
お分かりになる方がいらっしゃいましたら、どうかご教示ください。
宜しくお願い致します。

A 回答 (4件)

各シートにデータを転記した後で以下の2行を追加してください



Range("C65536").End(xlUp).Offset(1).FormulaR1C1 = "=SUM(R2C[],R[-1]C[])"
Range("C65536").End(xlUp).Offset(, -2).Value = "総計"

この2行はワークシートを明示していないのでアクティブシートに対して処理します。もしワークシートを明示するなら
 Worksheets(1).Range("C65536")
のようにします。
    • good
    • 0

#02です。

解決されたようで何よりです
補足でお問い合わせいただいた件ですが、あのコードは業者毎の各シートのデータ振り分けが全て終わってから行うべき処理です

もし1行ずつ振り分けしている途中で挿入すると、確かに毎行挿入してしまいますね。以下なら大丈夫です。

'振り分けが終わった後に記述
Dim idx As Integer
For idx = 2 To Worksheets.Count
Worksheets(idx).Range("C65536").End(xlUp).Offset(1).FormulaR1C1 = "=SUM(R2C[]:R[-1]C[])"
Worksheets(idx).Range("C65536").End(xlUp).Offset(, -2).Value = "総計"
Next idx
    • good
    • 0

シートの現状の有り様が判らないので


Array("Sheet2", "Sheet3", "Sheet4")
で限定したが
一般的なルールで考えられるなら考えてください。
例 ブックの全てのワークシートのうち、Sheet1を除くとか。
これはシートへの振り分けが終わった後の処理です。

Sub test01()
Dim sht As Worksheet
sh = Array("Sheet2", "Sheet3", "Sheet4")
For Each sht In Worksheets(sh)
d = sht.Range("C65536").End(xlUp).Row
sht.Cells(d + 1, "A") = "総計"
sht.Cells(d + 1, "C") = Application.WorksheetFunction.Sum(Range(sht.Cells(2, "C"), sht.Cells(d, "C")))
Next
End Sub
    • good
    • 0
この回答へのお礼

いろいろと試行錯誤した結果、無事に完成しました。
最初予想外の結果となってしまったのは、シート1から業者シートへそれぞれデータを振り分けるためのループ処理の中に、教えて頂いた集計のマクロを記述してしまったことが原因でした。

業者別のシート名が不規則(業者の名前がシート名)なので、
For i = 2 To Worksheets.Countとして、シート選択で処理をしたら、思ったとおりの結果が得られました。

どうもありがとうございました。

お礼日時:2007/08/21 15:41

#01です。

訂正です(1行目の「,」→「:」)
Range("C65536").End(xlUp).Offset(1).FormulaR1C1 = "=SUM(R2C[]:R[-1]C[])"
Range("C65536").End(xlUp).Offset(, -2).Value = "総計"

この回答への補足

zap35さん、ありがとうございます。
しかしながら、この式を入れてマクロを実行してみましたら、
最終行までの全ての行に一行挿入されて
商品コード 名称  金額      業者
100    PC1  10,000  ア
総計          =SUM(C$2:C2)
110    PC2  10,000  ア
総計          =SUM(C$2:C4)
112    PC6  12,000  ア
総計          =SUM(C$2:C6)
117    PC8  10,000  ア
総計          =SUM(C$2:C8) 
↑こんな感じになってしまいました。

教えて頂いた式の意味をあまり理解出来ておらず、修正するにも手の付け様がありませんでした。申し訳ありません。
原因が分かりましたら、教えて頂けますか?
度々すみません。        

補足日時:2007/08/21 11:29
    • good
    • 0

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