• ベストアンサー

マクロを使用した表において集計を自動表示する

エクセルのマクロでABC集計表なるものを作成しています。ボタンを押す毎に下位に行が追加され表ができる形です。行を挿入する毎に右側の3列に設けたセルにA~C品の数量を記入し、その集計を各2行目のセル(色付きのセル)に表示できるようにしたいと考えています。例えばA品の集計をK6に”=SUM(k7:k7)”として、ボタンを押して下へセルを追加しますと、集計が正しくされず、計算式を確認すると”=SUM(k8:k8)”となっており、数列1のk7が固定されていません。 マクロ文を入れないとできないのでしょうか、ご教授下さい。よろしくお願いします。

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

  • ベストアンサー
回答No.6

もしも、「常に7行目に新しい数値の入力欄を作る」というのが正しい仕様であれば、今までの方法は使えません。 行の挿入マクロは元のままにしておいて、 Sub sumary() Dim i, smr As Integer smr = 0 For i = 11 To 13 For j = 7 To Cells(Rows.Count, i).End(xlUp).Row smr = smr + Cells(j, i) Next j Cells(6, i) = smr smr = 0 Next i End Sub 集計用に、こんなマクロを使ったらどうでしょう? 行の挿入ボタンで常に7行目と6行目の間に行が挿入され、過去の入力は下へ送られていくわけですが、このマクロで常に7行目から最終行までの値を合計して、それぞれの6行目に書き込むことができます。

gge7ahjk1n
質問者

お礼

大変ありがとうどざいました。マクロについては、今回初めての初心者です。早速使用しています。

その他の回答 (5)

回答No.5

Rows("7:7").Select Selection.Insert Shift:=xlDown これがダメです。 行の挿入が、毎回7行目の上に挿入されてますので、集計をやる対象がずれていくのです。 現在のマクロを利用するとして Sub Macro1() Macro1 Macro Sheets("(削除禁止シート)").Select Rows("1:1").Select Selection.Copy Sheets("ABC集計表").Select Dim 最終行 As Integer Dim 基準セル As String 最終行 = Cells(Rows.Count, 11).End(xlUp).Row + 1 基準セル = "K" & 最終行 Range(基準セル).EntireRow.Insert Range("A2:C3").Select End Sub これでやってみてはいかがですか? それとも、新しい数値を入力する欄が常に集計セルの1行下にある というのが仕様ですか?

回答No.4

>=SUM(K7:K8)と入力してやってみましたが、=SUM(K8:K9)となり、K7:K9となりません 行の挿入が、6と7の間になっているからですね。 行の挿入ボタンでマクロを動かしていると思いますが Sub inserRow() Dim 最終行 As Integer Dim 基準セル As String 最終行 = Cells(Rows.Count, 11).End(xlUp).Row + 1 基準セル = "K" & 最終行 Range(基準セル).EntireRow.Insert End Sub これでやってみてください。 ここでは、K列を基準に見てますので、K列のデータがある最終行を取得して+1したところに行を追加しています。 うちでやってみたところ、 =SUM(K7:K8) が狙い通りに =SUM(K7:K9) となりましたよ

gge7ahjk1n
質問者

補足

早速、試してみましたが行を挿入するたびに、K7:K8→k8:k9→k9:k10→k10:k11と変わります。 恐らく行挿入のマクロに問題があるように思います。いかがでしょうか マクロ文は以下の通りです、 Sub Macro1() Macro1 Macro Sheets("(削除禁止シート)").Select Rows("1:1").Select Selection.Copy Sheets("ABC集計表").Select Rows("7:7").Select Selection.Insert Shift:=xlDown Range("A2:C3").Select End Sub

回答No.3

ボタンを押すと数値入力欄が下に追加され、 数値入力欄のK列~M列それぞれの合計が 6行目に表示されるってことでいいんですね? わざわざ、K~Mの右の方を使ってるということは、 A~Jにもなんらかの表などがあって連動したいとか、 事情があるのかな?などと考えています。 --------------------------------------------- 一例として 特にマクロなど組まなくても、最初からセルのK6,L6,M6に =SUM(K7:K8) , =SUM(L7:L8) , =SUM(L7:L8) としておき、行の追加はデータのある最終行+1とする (手動で行を挿入してもいいとは思いますが・・・) 8行目は空白となってますので、 行が挿入されるのは、最初7行目と8行目の間になります。 すると、集計セルの式は =SUM(K7:K9) , =SUM(L7:L9) , =SUM(L7:L9) と書き換わります いかがでしょうか? どうしても無駄な行を出したくない場合には、マクロを組みましょう

gge7ahjk1n
質問者

補足

早速のご回答ありがとうございました。 =SUM(K7:K8)と入力してやってみましたが、=SUM(K8:K9)となり、K7:K9となりません。何か原因があると思われます。他の方法も試してみますが、わかりましたらお知らせ下さい。

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.2

2行目の色つきセルに,最初から =SUM(K7:K1000) などのように十分下のセルまで合計する式を入れておき,あとは単純に下へ下へとデータを書き足していけばそれで終わりのようです。特にわざわざマクロを持ち込む必要が見あたりません。 マクロを使って「行を追加する」のが重要なのなら,その部分はそのまま残しておいて今後も使い,上述のようなSUMの式を事前に入れておくことで「マクロにSUMの式(集計の式)を入れさせる」のはヤメにするのでもOKです。

回答No.1

図や実際の表の画像でも添付してもらわないと、 この文章だけじゃ仕様のイメージがさっぱりわかりません。 例を書くいてあるけど、もっと具体的に。 >右側の3列に設けたセル 具体的にどこですか? >集計を各2行目のセル(色付きのセル)に表示 具体的にどこですか? >K6に”=SUM(k7:k7)” これって、K6=K7と一緒 申し訳ないですが、もっときっちりと仕様説明してください。

gge7ahjk1n
質問者

補足

ファイルを添付する予定でしたがファイルの添付方法がわかりませんでした。         ボタン                           k列   L列  M列 5行                         A品  B品  D品 6行                        集計セル 集計セル 集計セル 7行                        数入力 数入力 数入力 以下、ボタンを押して下位へセルを追加して、k~Mへ数値入力して、各製品の集計をK6、L6、M6へ セルが追加されるごとに合計を表示さたいのです。

関連するQ&A