こんにちは。
商品コード 名称 金額 業者
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の業者ウのデータ・・・を集計したいのですが、どの様なマクロを組めばそれぞれのシートの最終行で集計が表示されるのでしょうか?
ちなみに、商品数、業者数とも変動するため、固定値が入れられません。
本やインターネット等でいろいろ調べてみたのですが、分かりませんでした。
お分かりになる方がいらっしゃいましたら、どうかご教示ください。
宜しくお願い致します。
No.1ベストアンサー
- 回答日時:
各シートにデータを転記した後で以下の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")
のようにします。
No.4
- 回答日時:
#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
No.3
- 回答日時:
シートの現状の有り様が判らないので
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
いろいろと試行錯誤した結果、無事に完成しました。
最初予想外の結果となってしまったのは、シート1から業者シートへそれぞれデータを振り分けるためのループ処理の中に、教えて頂いた集計のマクロを記述してしまったことが原因でした。
業者別のシート名が不規則(業者の名前がシート名)なので、
For i = 2 To Worksheets.Countとして、シート選択で処理をしたら、思ったとおりの結果が得られました。
どうもありがとうございました。
No.2
- 回答日時:
#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)
↑こんな感じになってしまいました。
教えて頂いた式の意味をあまり理解出来ておらず、修正するにも手の付け様がありませんでした。申し訳ありません。
原因が分かりましたら、教えて頂けますか?
度々すみません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) VBA ふたつの同じ様式シートのセルをコピーしたい 2 2023/03/08 15:28
- Excel(エクセル) 【マクロ】同じフォルダ内にある複数ブックから1つのブック内の1シートにデータを集めたい 6 2022/09/28 18:16
- Excel(エクセル) エクセルの条件付き書式 個人シートを参照して集計シートに色付けしたい 1 2023/06/22 00:39
- Excel(エクセル) Excelマクロ 差分抽出の方法が知りたいです。 2 2023/03/07 13:25
- Excel(エクセル) 複数セルデータを別シートの単一セルにコピーしたい。(詳細をご参照ください) 1 2022/12/14 15:08
- Visual Basic(VBA) 集計シートA列のコードと一致する右に並んだシート名(コード)の3行目から10行目をコピーして貼り付け 4 2022/08/18 15:24
- Visual Basic(VBA) まとめシートから集計シートへA列のコードが一致したら1行コピーするマクロをネット上で見つけました。こ 1 2022/08/30 14:11
- Visual Basic(VBA) コード名シートA列と集計シートA列のコードが一致したら、コード名シートA5からk12の範囲をコピーし 1 2022/08/29 23:46
- Excel(エクセル) Excel、同じフォルダ内のExcelファイルの特定シートのみを1つのファイルに集約したい 8 2022/09/07 15:12
- Visual Basic(VBA) VBAで最新のデータを別シートに転記する方法をお教えください。 3 2022/04/07 19:20
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
EXCELで複数のシートを一度に「...
-
エクセルで複数のシートに画像...
-
エクセルでブック内の倍率がバ...
-
特定のシートのみ再計算させな...
-
【ExcelVBA】マクロの入ったシ...
-
【Excel VBA】データ貼り付け先...
-
Excel 全シート上のボタンを削...
-
ワークシートそのものの色を変...
-
エクセルのシート連番の振り直し
-
エクセル2003で、複数のシート...
-
EXCELの図形(テキストボックス)...
-
ハイパーリンクでジャンプした...
-
Wordで差し込み印刷時に表示す...
-
エクセルのシー名を二段表示に...
-
エクセルで「シートを追加」→「...
-
エクセル、特定のシートにパス...
-
エクセル 非表示のシートをハ...
-
Accessのテーブルを既存のExcel...
-
accessへエクセルの複数のシー...
-
エクセルでリンク貼り付けした...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
EXCELで複数のシートを一度に「...
-
エクセルで複数のシートに画像...
-
エクセルでブック内の倍率がバ...
-
特定のシートのみ再計算させな...
-
【ExcelVBA】マクロの入ったシ...
-
ワークシートそのものの色を変...
-
エクセルの2つのシートを並び...
-
EXCELの図形(テキストボックス)...
-
ハイパーリンクでジャンプした...
-
Wordで差し込み印刷時に表示す...
-
エクセルで、シートの名前を変...
-
エクセル、特定のシートにパス...
-
エクセルのシー名を二段表示に...
-
Accessのテーブルを既存のExcel...
-
確定申告用の医療費集計フォー...
-
エクセルのシート連番の振り直し
-
【Excel】エクセルの1ファイル...
-
エクセルの複数シートでのリン...
-
【Excel VBA】データ貼り付け先...
-
エクセルでリンク貼り付けした...
おすすめ情報