• ベストアンサー

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

zap35の回答

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

#01です。補足回答が待てなかったのでB列~任意の列全てに金額があると見なして小計と合計を入れるサンプルマクロを作ってみました。列毎に空白セルはバラバラの行にあっても構いません。また空白行が2行以上連続してもよいです。 なお上記仕様だと「小計」「合計」は入れるところがなくなりますので小計:青文字、合計:赤文字にしました。 もし「1行目に金額」とある行だけが集計対象」のような条件がある場合はif文を追加すればいけると思います。修正してみてください。 Option Explicit Sub Macro1() Dim Target, Rng, Ofrng As Range, Adr As String Dim LastC, LastR, idxC, idxR As Long  On Error Resume Next  Application.ScreenUpdating = False '初期化、最終セル位置確認  Set Target = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell)  Range(Cells(1, 1), Target).Font.ColorIndex = 0  LastR = Target.Row + 1  LastC = Target.Column  Set Target = Nothing  Set Target = ActiveSheet.Cells.SpecialCells(xlCellTypeFormulas, 23)  If Target.Cells.Count > 0 Then   Target.ClearContents  End If '小計挿入  For idxC = 2 To LastC   For idxR = LastR To 2 Step -1    Set Rng = Cells(idxR, idxC)    With Rng     Set Ofrng = .Offset(-1, 0)     Adr = Ofrng.Address     If Ofrng <> "" Then      If IsNumeric(Ofrng) Then       If Ofrng.Offset(-1, 0) <> "" Then        Adr = Range(Ofrng, Ofrng.End(xlUp)).Address        idxR = Range(Ofrng, Ofrng.End(xlUp)).Row       Else        Adr = Range(Ofrng).Address       End If       Rng.Formula = "=subtotal(9," & Adr & ")"       Rng.Font.ColorIndex = 5      End If     End If    End With   Next idxR  Next idxC '合計挿入  For idxC = 2 To LastC   Set Target = Cells(65536, idxC).End(xlUp)   Adr = Target.Address   Set Target = Target.Offset(1, 0)   Target.Formula = "=subtotal(9," & Cells(1, idxC).Address & ":" & Adr & ")"   Target.Font.ColorIndex = 3  Next idxC  Application.ScreenUpdating = True End Sub

kenchandesu
質問者

お礼

ご回答ありがとうございます。 具体例は、NO.1の補足をご参照下さい。 データに空白があった場合、そこで集計されてしまいます。空白データを0に置き換えると、うまく、計欄に合計数字が出ます。 空白データを自動的に0に置き換える方法はありますか?

関連する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列だけです。 そして、最終行に全部の合計も出したいのです。 ただ、量が多いのと、頻繁に行なう作業なのでマクロでささっと出来ないかと思います。 どなたかどうすればよいか教えてください。 なにとぞお願いします。