• ベストアンサー

EXCELマクロを使い、空白行ではさまれた複数列の範囲の数字を合計

zap35の回答

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.6

#01です。補足ありがとうございました。たぶんこのマクロでいけるでしょう。 次回ご質問されるときは、曖昧さがないように最初から具体的な例を提示してくださいね。お互いに二度手間、三度手間になってしまいますから… Option Explicit Sub Macro2() Dim Target, Rng, OfRng, StRng As Range, Adr As String Dim LastC, LastR, idxC, idxR As Long On Error Resume Next Application.ScreenUpdating = False '初期化、最終セル位置確認 LastR = Range("a65536").End(xlUp).Row + 1 LastC = Range("IV1").End(xlToLeft).Column Set Target = Nothing Set Target = ActiveSheet.Cells.SpecialCells(xlCellTypeFormulas, 23) If Target.Cells.Count > 0 Then Target.ClearContents End If For idxR = 2 To LastR If Cells(idxR, 1) = "計" Or Cells(idxR, 1) = "合計" Then Cells(idxR, 1).ClearContents End If Next idxR LastR = Range("a65536").End(xlUp).Row + 1 '小計挿入 For idxR = LastR To 2 Step -1 Set Rng = Cells(idxR, 1) With Rng .Value = "計" Set OfRng = .Offset(-1, 0) Set StRng = OfRng.End(xlUp) For idxC = 2 To LastC If OfRng.Offset(-1, 0) <> "" Then Adr = Range(StRng.Offset(0, idxC - 1), _ OfRng.Offset(0, idxC - 1)).Address Rng.Offset(0, idxC - 1).Formula = "=subtotal(9," & Adr & ")" Else Rng.Offset(0, idxC - 1).Formula = "=subtotal(9," & _ OfRng.Offset(0, idxC - 1).Address & ")" End If Next idxC idxR = .End(xlUp).Row End With Next idxR '合計挿入 LastR = Range("A65536").End(xlUp).Row + 1 Cells(LastR, 1) = "合計" For idxC = 2 To LastC Cells(LastR, idxC).Formula = "=subtotal(9," & Cells(2, idxC).Address & ":" _ & Cells(LastR - 1, idxC).Address & ")" Next idxC Application.ScreenUpdating = True End Sub

kenchandesu
質問者

お礼

返事がおそくなりました。丁寧なご回答ありがとうございました。うまくできました!! ここで要望が3点あります。 1.例では、2桁の数字を入れていました。これを千円単位の数字に置き換えて実行しますと、空白セルの下の計と合計欄がカンマ区切りになりません。計、合計すべてカンマ区切りにする。 2.例では、コード番号がA列でした。A,B列に他の項目が入り、コード番号がC列、データがD列からJ列までのデータにする。 3.注釈を「小計挿入」のように付けていただいていますが、他の行でも、もう少し詳しい注釈をつけて下さい。

関連するQ&A

  • EXCELマクロを使い、空白行ではさまれた範囲の数字を合計

    下記のようなデータがあります。 条件 並び方:コード順 行数:変動する 見出し行の下とコードが変わる毎に空白行が1行あります。 マクロで空白行にコード毎の計と最後に合計を入れる方法を教えてください。 元データ コード 金額 1 10 1 20 1 50 2 40 2 20 2 30 3 50 3 10 マクロ実行結果 コード 金額 1 10 1 20 1 50 計 80 2 40 2 20 2 30 計 90 3 50 3 10 計 60 合計 230

  • [ No.964924 質問:EXCELで同じ内容の行を削除 ]について詳しく教えてください。

    エクセルで同じ内容のセルのある行を自動的に削除したく、No.964924の回答No.2を実行したいのですが、マクロがまったくわかりません。このマクロはどのように記録、実行するのでしょうか。 勉強不足で申し訳ありません。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=964924

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

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

  • エクセルのマクロで、選択範囲の空白行を削除する方法

    タイトルの通りですが、エクセルのマクロを使って、選択範囲にデータの入っていない空白行を削除するマクロを作りたいのですが、うまく行きません。 (空白行の判定は、1つの列だけで、O.K.です。) どなたか、詳しい方、アドバイスお願いします。

  • マクロでエクセルの空白行をアクティブにしたい

    データーを入力しているシートがあり、マクロのボタンをクリックする データの空白行をアクティブになるようにしたいのです。 具体的に B列のデーターが入力されていない行をアクティブにして他のシートのデーターを張り付ける作業をしたいのですが・・よろしくお願いします。

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

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

  • エクセルマクロで

    http://oshiete1.goo.ne.jp/kotaeru.php3?q=2107311 で質問させていただきました range("c65536").end(xlup).offset(1,0).value = 100000 で、最終行から1つ下のセルに100000と出ましたが そのセルから右に8列 C-K列を塗りつぶししたいのです よろしくお願いいたします

  • Excel-VBAで、Loop処理させるセルの範囲を指定したい

    わたしが http://oshiete1.goo.ne.jp/kotaeru.php3?q=2222401 に示したマクロですと、 1行目から100列×100行の範囲を塗られてしまいますが、 【5行目から】、100列×100行を塗らせるように するには、どのように書き換えたらよいでしょうか。 よろしくお願い致します。

  • エクセルで1行ごとに空白行を挿入し、挿入した空白行に色をつけたいです

    タイトルの通りです。 エクセル(2000)で、データはシート毎に件数が違います。 各シート毎にそれぞれ1行毎、空白行を挿入し、挿入した空白行のA列~G列までに薄いグレーの色をつけるマクロを入れたいのですが、うまくいきません。 詳しい方、教えて下さい。

  • エクセルマクロで表の途中の集計行と合計行追加

    こんなことできますか? エクセルの表が各シートに一つずつあります。 B列からR列まで使用しています。 始まりは3行目で見出し行です。 データは4行目以降ですが、これは各シートごとに最終行は異なります。だいたい120行から200行程度です。 途中に空白はありません。 この表はS列の数値(12種類)により分類され並べ替えてあります。 やりたいのは、S列の数値を見て、分類(同じ数字)ごとに集計する行を追加したいのです。 集計する列は、D~K列だけです。 そして、最終行に全部の合計も出したいのです。 ただ、量が多いのと、頻繁に行なう作業なのでマクロでささっと出来ないかと思います。 どなたかどうすればよいか教えてください。 なにとぞお願いします。