【エクセルマクロ】小計下への空白行挿入

このQ&Aのポイント
  • マクロ初心者向けのエクセルマクロについての質問です。データを日付ごとに集計し、小計を挿入するマクロを使いたいですが、小計の下に空白行を挿入したいです。
  • エクセルマクロを使用して、日付ごとのデータを小計で集計する方法について質問です。マクロコード内で、小計行の下に空白行を挿入する方法を教えてください。
  • エクセルマクロ初心者の質問です。日付ごとにデータを集計し、小計行を挿入したいですが、見やすくするために小計行の下に空白行を挿入したいです。マクロコードの作成方法を教えてください。
回答を見る
  • ベストアンサー

【エクセルマクロ】小計下への空白行挿入

マクロ初心者です。 日付ごとのデータがありまして、 webで検索した次のマクロを使って、 ' 1行目から処理開始(見出しなし) GYO = 1 Do While Cells(GYO, 1).Value <> "" ' 小計グループの先頭行→GYO1 GYO1 = GYO GYO = GYO + 1 ' 次の行から同じグループでない行を見つける Do While Cells(GYO, 1).Value = Cells(GYO1, 1).Value GYO = GYO + 1 Loop ' 同じグループの最終行→GYO2 GYO2 = GYO - 1 ' 小計行を挿入 Rows(GYO).Insert Cells(GYO, 2).Value = Cells(GYO1, 1).Value & "月の小計" Cells(GYO, 3).Value = " ********** " Cells(GYO, 6).FormulaR1C1 = "=SUBTOTAL(9,R" & GYO1 & "C:R" & GYO2 & "C)" Cells(GYO, 7).FormulaR1C1 = "=SUBTOTAL(9,R" & GYO1 & "C:R" & GYO2 & "C)" Cells(GYO, 8).FormulaR1C1 = "=SUBTOTAL(9,R" & GYO1 & "C:R" & GYO2 & "C)" GYO = GYO + 1 Loop ' 総合計 Cells(GYO, 2).Value = "年度合計" Cells(GYO, 3).Value = " ********** " Cells(GYO, 6).FormulaR1C1 = "=SUBTOTAL(9,R1C:R" & GYO2 & "C)" Cells(GYO, 7).FormulaR1C1 = "=SUBTOTAL(9,R1C:R" & GYO2 & "C)" Cells(GYO, 8).FormulaR1C1 = "=SUBTOTAL(9,R1C:R" & GYO2 & "C)" 次のように、小計と年度計を挿入できるのですが、 見にくいので、小計の下に1行挿入したいのです。 4/1    ○○○ ¥□□ | 4/30    ○○○ ¥□□ 4月の小計 **** ¥□□ 5/1    ○○○ ¥□□ | 5/31    ○○○ ¥□□ 5月の小計 **** ¥□□ 6/1 |  (途中省略) 4/30 4月の小計 **** ¥□□ 年度計  **** ¥□□ マクロに詳しい方、アドバイスよろしくお願いします!

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

  • ベストアンサー
  • nattocurry
  • ベストアンサー率31% (587/1853)
回答No.1

すべての月の小計行の下に空行を挿入したいのであれば、 ' 小計行を挿入 Rows(GYO).Insert Cells(GYO, 2).Value = Cells(GYO1, 1).Value & "月の小計" Cells(GYO, 3).Value = " ********** " Cells(GYO, 6).FormulaR1C1 = "=SUBTOTAL(9,R" & GYO1 & "C:R" & GYO2 & "C)" Cells(GYO, 7).FormulaR1C1 = "=SUBTOTAL(9,R" & GYO1 & "C:R" & GYO2 & "C)" Cells(GYO, 8).FormulaR1C1 = "=SUBTOTAL(9,R" & GYO1 & "C:R" & GYO2 & "C)" GYO = GYO + 1 これを、 ' 小計行を挿入 Rows(GYO).Insert Rows(GYO).Insert 'この行を追加 Cells(GYO, 2).Value = Cells(GYO1, 1).Value & "月の小計" Cells(GYO, 3).Value = " ********** " Cells(GYO, 6).FormulaR1C1 = "=SUBTOTAL(9,R" & GYO1 & "C:R" & GYO2 & "C)" Cells(GYO, 7).FormulaR1C1 = "=SUBTOTAL(9,R" & GYO1 & "C:R" & GYO2 & "C)" Cells(GYO, 8).FormulaR1C1 = "=SUBTOTAL(9,R" & GYO1 & "C:R" & GYO2 & "C)" GYO = GYO + 2 '+1 を +2 に変更 にすれば良いです。 年度計の上だけに空行を挿入したいのであれば、 ' 総合計 Cells(GYO, 2).Value = "年度合計" を、 ' 総合計 GYO = GYO + 1 'この行を追加 Cells(GYO, 2).Value = "年度合計" にすれば良いです。

k-parking
質問者

お礼

表も見やすくなり助かりました! ありがとうございました!!!

関連するQ&A

  • EXCELでマクロを使って、小計、合計の出し方

    1.部の中にそれぞれ、営業1課、営業2課、…があり、社員と売上金額が表示されている下記のようなデータがあります。 部、課、社員の数は、実際はもっとたくさんあり、それぞれの件数は、毎月変化します。 マクロを使って、課毎計、部毎計、総合計を出す方法を教えて下さい。 試しに作りましたら、下記のような結果になり、うまくいきません。 元データ 部 課 社員 金額 A 営業1課 a 10 A 営業1課 b 20 A 営業1課 c 30 A 営業2課 d 40 A 営業2課 e 50 A 営業2課 f 60 B 営業1課 g 70 B 営業1課 h 80 B 営業1課 I 90 B 営業2課 j 100 B 営業2課 k 110 B 営業2課 l 120 実行結果           ×   正解 部 課 社員 金額   金額 A 営業1課 a 10   10 A 営業1課 b 20   20 A 営業1課 c 30   30   営業1課 計  60   60 A 営業2課 d 40   40 A 営業2課 e 50   50 A 営業2課 f 60   60   営業2課 計 210   150 A 合計     110   210 B 営業1課 g 70   70 B 営業1課 h 80   80 B 営業1課 I 90   90   営業1課 計 240   240 B 営業2課 j 100   100 B 営業2課 k 110   110 B 営業2課 l 120   120   営業2課 計 570   330 B 合計     230   570 総合計     780   780 Sub 合計計算() Sheets("元").Select Sheets("元").Copy Before:=Sheets(2) Dim GYO1 As Long '部 グループの先頭行 Dim GYO2 As Long '部 グループの最終行 Dim GYO3 As Long '課グループの先頭行 Dim GYO4 As Long '課グループの最終行 Dim GYO As Long '小計、合計行 Dim strFORMULA As String GYO = 2 '空白でない間、次の作業を繰り返す Do While Cells(GYO, 1).Value <> "" GYO1 = GYO GYO = GYO + 1 '部が同じ間、次の作業を繰り返す Do While Cells(GYO, 1).Value = Cells(GYO1, 1).Value GYO = GYO + 1 '課が同じ間、次の作業を繰り返す GYO3 = GYO Do While Cells(GYO, 2).Value = Cells(GYO3, 2).Value GYO = GYO + 1 Loop '課計 GYO2 = GYO - 1 Rows(GYO).Insert Cells(GYO, 2).Value = Cells(GYO3, 2).Value & " 計" Cells(GYO, 4).FormulaR1C1 = "=SUBTOTAL(9,R" & GYO1 & "C:R" & GYO2 & "C)" GYO = GYO + 1 Loop '部計 GYO4 = GYO - 1 Rows(GYO).Insert Cells(GYO, 1).Value = Cells(GYO1, 1).Value & " 合計" Cells(GYO, 4).FormulaR1C1 = "=SUBTOTAL(9,R" & GYO3 & "C:R" & GYO4 & "C)" GYO = GYO + 1 Loop ' 総合計 Cells(GYO, 1).Value = "総合計" Cells(GYO, 4).FormulaR1C1 = "=SUBTOTAL(9,R1C:R" & GYO2 & "C)" Range("A1").Select End Sub 2.尚、この質問のように表形式のデータを間隔をあけて原稿を作成しても確認画面になると、間隔が詰まります。間隔が詰まらない方法も教えて下さい。

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

    質問ですが,以下の参考としたマクロについて,データが1支店1件しかない場合は行を挿入せずにこのままとしたい場合はどのように修正すれば良いか教えていただけませんでしょうか。 1支店2件以上のデータがある場合は,以下の参考としたマクロのとおり行を挿入して小計を計算表示する。  支店コード1001 20000円 200円  ← 行挿入不要 小計無し       1002 30000円 200円       1002 45000円 300円       小計 75000円 500円 参考にした質問・アドレス A列に支店コード(4桁の数値)、J列に金額、K列に手数料があります。 支店は5箇所でデータは1支店あたり100~500行ほどあります。全支店のデータが連続しています。 1.支店コードの最終行の下に1行挿入し、J列,K列の小計を計算する。 2.最後の支店の小計の下に一行あけてJ列,K列の合計をしたい。 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   アドレス http://okwave.jp/qa/q414647.html

  • ExcelのマクロをAccessで動かすには…

    今までExcelを使用していてVBAも段々と理解してきたのですが 今回Accessを使用することになって詰まってしまいました。 下のようなExcelのマクロ(VBA)があるのですが、 これをAccessでも同じように動かしたいのですがわかりません(汗) ----------------------------------------------- Sub テスト() Dim GYO As Long GYO = 1 Do Until Worksheets("テスト").Cells(GYO, 1).Value = "" If Worksheets("テスト").Cells(GYO, 1).Value >= 80 Then Worksheets("テスト").Cells(GYO, 2).Value = "合格" Else Worksheets("テスト").Cells(GYO, 2).Value = "不合格" End If GYO = GYO + 1 Loop End Sub ----------------------------------------------- これでAccessのレコード一つ一つの合否を入力する欄に 自動で入力されるようにしたいのですが、 Accessでの記述方法がよくわからないのです。(^_^;) お詳しい方、よろしくお願いしますm(_ _)m

  • EXCELマクロについて

    条件 シート名提供データE列の3行目からデータが入っています。    ブランク以外のデータをコピーしてシート名WorkのC列の2行目から貼り付けたいので下記のマクロを書いていますがおかしい所 はないのでしょうか。教えてください。 いまいちCellsの使い方がわかりません。 出来たら下記の意味を教えてください。 brank = Worksheets("提供データ").Cells(gyo, 5).Text Range(Cells(3, 5), Cells(gyo, 5)).Select Sub 貼付() Dim gyo, brank Sheets("提供データ").Select Range("e3").Select gyo = 2 Do gyo = gyo + 1 brank = Worksheets("提供データ").Cells(gyo, 5).Text Loop While brank <> "" Range(Cells(3, 5), Cells(gyo, 5)).Select Selection.Copy Sheets("work").Select Range("c2").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False End Sub

  • エクセル 変数でのSUM

    エクセルのデータをグループに分け、小計を取りたいのですが、データ件数はそのつど異なります。 マクロを使い、クリックひとつで小計を出すようにしたいのです。 データの並び替え、グループが異なると小計用の行を挿入するところまでは出来たのですが、その後SUMの書き方が判りません 行の変数がLIN_A、LIN_B の場合 Cells(LIN_C,3).VALUE=SUM(C"LIN_A":C"LIN_B")??? のように書くにはどのようにすれば良いでしょうか? 宜しくお願いいたします。

  • 空白セルを1と認識するには、どうすればいい?

    マクロ初心者です。 前任者のマクロファイルで不具合があり、直したいのですがわかりませんので教えてください。 ActiveCell.Offset(0,34).FormulaR1C1="=R[-1]C*R[-1]C[-3]"'自動機部品費小計挿入 ActiveCell.Offset(0,35).FormulaR1C1="=R[-1]C*R[-1]C[-4]"'自動機部品費小計挿入 上の式で、[-3]と[-4]の位置のセルが空白の時に、0と認識して、答えが0になってしまいます。 空白は、1と認識して計算するようにするには、どのような式にすればよいのでしょうか。 ご教授願います。

  • エクセルマクロ、空白行(セル)の挿入

    データがA、B、C、D、E列100行まであります。 このうちD、E列を除き、エクセルのマクロで1行ごとに空白で10行挿入したいです。 (A、B、C、D列のデータに空白セルを10行分挿入し、下にシフトするイメージ。D、E列はそのまま。) ご教授頂きたく、お願いします。

  • Excelの小計機能のマクロについて

    Excelの小計機能をマクロで記録して、別のマクロにコードをコピペして使っています。 高頻度で小計が2回行われるんですが、どうしてでしょう?? あと、行が多いとすごく重くなり固まってしまいます。。 もし他にいいコードがあれば教えてください。 ちなみに、Excelの小計機能で、A列がグループの基準で、K列の値を合計しています。 よろしくお願い致します。

  • エクセルマクロ、集計行の上に空白行挿入

    エクセルデータがA、B、C、D、E列1000行まであります。 C列基準でE列を合計するマクロを作成しましたが(集計行はデータの下に挿入)、実行の結果、新たに挿入される集計行の上に空白行を1行挿入していくということを、作成したマクロに付加できるでしょうか? ご教授頂きたく、お願いします。

  • マクロで小計行を入力する方法

    はじめまして。 過去問を検索したのですが、よく分からなかったので質問させていただきます。 数日前にマクロの練習をし始めたばかりで、分からないことが多々あるのですが、ある表を練習で作っていて詰まってしまいました。 番号  月日  会社名  金額 1   11/1   A社   100 2   11/5   A社   200 3   11/4   B社   150 4   11/9   C社   300 このような表があるとして 番号  月日  会社名  金額 1   11/1   A社   100 2   11/5   A社   200   <空白行3行> 3   11/4   B社   150   <空白行3行> 4   11/9   C社   300  ※空白行が3行なのは、印刷した時に会社ごとの境目を見やすくする為です。 この表をマクロを使って自動で会社ごとの境目に空白行を挿入するまではできました。 この後、金額の下に会社ごとの小計を出したいのです。 毎月各社の項目数が変化するので、小計欄を固定することが出来ません。 なので、引数の設定で詰まってしまっています。 色々なサイト様を回って myLAST_ROW = Cells(Rows.Count, 2).End(xlUp).Row myTOP_ROW = 2 myBOTTOM_ROW = i - 1 Set myRANGE = _ Range(Cells(myTOP_ROW, 4), Cells(myBOTTOM_ROW, 4)) Cells(i, 4).Formula = "=SUM(" & myRANGE.Address & ")" myTOP_ROW = i + 1 というのが自分の思う内容に一番近いところまでいったのですが、 番号  月日  会社名  金額 1   11/1   A社   100 2   11/5   A社   200              300   3   11/4   B社   150              450 4   11/9   C社   300              750 のようになってしまいます。 直前のVBAはこうなっています(実際はこの前にページ設定などが入っています)。 For i = Cells(Rows.Count, myCol).End(xlUp).Row To 3 Step -1 If Cells(i, myCol) <> Cells(i - 1, myCol) Then Rows(i).Insert Rows(i).Insert Rows(i).Insert 素人の文面で大変見づらく、そして分かりにくくて申し訳ないのですが、ご教授頂ければ幸いです。

専門家に質問してみよう