• ベストアンサー

エクセルで行を挿入し、小計、合計を出したい

質問いたします。 A列に支店コード(4桁の数値)、J列に金額、K列に手数料があります。 支店は5箇所でデータは1支店あたり100~500行ほどあります。全支店のデータが連続しています。 1.支店コードの最終行の下に1行挿入し、J列,K列の小計を計算する。 2.最後の支店の小計の下に一行あけてJ列,K列の合計をしたい。 どのようにしたら良いか教えてください。

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

(テストデータ)A1:C9小計合計のない状態で。下記は結果です。 支店コード 金額 手数料 1 10 1 1 20 2 1 30 3 小計 60 6 2 10 1 2 20 2 小計 30 3 3 5 2 3 10 2 3 15 1 小計 30 5 合計 120 14 (コード) Sub test01() d = Range("a2").CurrentRegion.Rows.Count ' MsgBox d Cells(d + 1, 1) = "END" Dim st1, gt1, st2, gt2 As Long st1 = 0: gt1 = 0: st2 = 0: gt2 = 0 mk = Cells(2, 1) '========== For i = 2 To 10000 If Cells(i, 1) = "END" Then Exit For '最終行判定 If Cells(i, 1) = mk Then '前行とコード同じか '------今回行分加算 st1 = st1 + Cells(i, 2) st2 = st2 + Cells(i, 3) Else mk = Cells(i, 1) '--------小計 Cells(i, 1).EntireRow.Insert Cells(i, 1) = "小計" Cells(i, 2) = st1 gt1 = gt1 + st1 st1 = 0 Cells(i, 3) = st2 gt2 = gt2 + st2 st2 = 0 '-----今回行分加算 i = i + 1 st1 = st1 + Cells(i, 2) st2 = st2 + Cells(i, 3) End If Next i '============終了 '-------小計 Cells(i, 1) = "小計" MsgBox st1 Cells(i, 2) = st1: gt1 = gt1 + st1: st1 = 0 Cells(i, 3) = st2: gt2 = gt2 + st2: st2 = 0 '-------合計 Cells(i + 1, 1) = "合計" Cells(i + 1, 2) = gt1 Cells(i + 1, 3) = gt2 End Sub (結果)上記の通り (本番注意) (1)B列-->J列、2-->10,C列-->K列、3-->11 (2)最後にENDが残るが消す。 (3)テストする時、元データを残して行うこと。   行が増えてしまうので、元戻しが大変ですから。

shonenA
質問者

お礼

ご回答感謝いたします。 お教えのとおりにしましたらうまくいきました。 ありがとうございました。

その他の回答 (1)

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.1

こんにちは。maruru01です。 「Visual Basic」のカテゴリーということは、マクロ(VBA)で行いたいということでしょうか。 支店数が5ということでしたら、総計を入れて6行分追加して関数を入力するだけで、手作業でやった方が早いと思いますが。 それとも、そのようなファイル(やシート)がたくさんあって、マクロで自動化したいということでしょうか。 もしくは、単に入力する関数がわからないということでしょうか。 補足して下さい。

shonenA
質問者

補足

早速のご回答ありがとうございます。 質問の仕方が悪く、趣旨がうまく伝わらなくて申し訳ありません。 行がたくさんあります。しかも月によって一支店分の行数が不定です。 A列 1234 1234 1234 ・ ・ ・ 1234 (1行挿入)    J列小計、K列小計 5678 5678 5678 ・ ・ ・ 5678 (1行挿入)    J列小計、K列小計 7890 7890 のように1234や5678の最後の行をつかみ、下に行を挿入し、J列、K列の数値の小計を出したいのです。そして全支店の総合計も出したいのです。手作業ですとかなり時間がかかりますし、毎月のことですので、BVAで自動化できないものかと思ったのです。よろしくお願いします。

関連するQ&A