dポイントプレゼントキャンペーン実施中!

下記の様な、データ行数の決まっていない各空白行に自動でSUM関数を入力するにはどうすれば良いでしょうか。

       A列   B列   C列
1行     123    酒    100
2行     123    酒    100
3行(空白)            (SUM)  

4行     215   ビール   200
5行     215   ビール   200
6行     215   ビール   200
7行(空白)            (SUM)
8行     324    ワイン  300
9行     324    ワイン  300
10行     324    ワイン  300
11行     324    ワイン  300
12行(空白)           (SUM)

(SUM)表記のセルにそれぞれのデータのSUM関数を自動で入れたいのですが。
実際のデータは3千行ほどあります。よろしくお願いいたします。

A 回答 (5件)

C1からC列の最終行+1行(たとえばC1:C3000)までの範囲を選択して、


[ジャンプ]-[セル選択]-[空白セル]
[SUM]を入れるセルだけが選択されますので、[Σ]を押します。
たぶんこの操作でお望みどおりになると思います。
    • good
    • 0
この回答へのお礼

この方法は違う列でも出来ますし、
他にも応用が利きそうですね。
業務短縮につながります。
ありがとうございました。

お礼日時:2012/04/08 23:08

通し番号を振った上で、集計、オートフィルタ、ピボットテーブルなどを利用するのが手軽だとは思いますが…。



SUM関数を書く方法も次のとおり考えてみました。


(1)D1に「=if(c1,,row())」と入力し、このセルをコピー。D列の2行目以下に貼る。
(2)E2に「=if(c2,,max(D$1:d1))」と入力。E列の3行目以下をオートフィル。
(3)F3に「=if(c3,,"=SUM(C"&(e3+1)&":C"&(d3-1)&")")」と入力。F列の4行目以下をオートフィル。
(4)F列全体をコピーし、G列に値のみ貼り付ける。
(5)G列全体を選択した状態でリボンの「検索と選択」の「置換」ウィザードを起動し、「0」を「」(空白)に置換。
(6)G列全体を選択した状態でリボンの「区切り位置」ウィザードを起動し、何もせずに「完了」をクリック。

ここまでで、G列にSUM関数が並んだ状態になっているはず。

(7)D~F列を削除。
(8)C列全体を選択した状態でジャンプ(Ctrl+G)を実行し、「セル選択」ボタンの中の「空白セル」をクリックし、「OK」を押す。
(9)(8)により選択されている空白セルを「左方向にシフト」により削除。

これで完成。


※質問文のC列の「(SUM)」と書いてある各セルは、実際には未入力だと解釈して回答文を作成しています)
    • good
    • 0

A列が空白の時、C列にSUM関数が入るようになっています。


Sub Macro1()
COUNTER = 0
For i = 1 To Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
COUNTER = COUNTER + 1
If IsEmpty(Range("A" & i)) Then
aa = (COUNTER - 1) * -1
Range("C" & i).FormulaR1C1 = "=SUM(R[" & aa & "]C:R[-1]C)"
COUNTER = 0
End If
Next i
End Sub
    • good
    • 0

こんばんは!



質問ではA列が同じデータごとの「小計」のようですのでSUMIF関数を使用してみてはどうでしょうか?
ただ・・・決まったセルではないようなので
やはりVBAの方が簡単だと思います。

その一例です。
Sheet見出し上で右クリック → コードの表示 → VBE画面に
↓のコードをコピー&ペーストしてマクロを実行してみてください。

Sub 小計() 'この行から
Dim i As Long
For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row + 1
If Cells(i, 1) = "" Then
With Cells(i, 1)
.Value = "小計"
.HorizontalAlignment = xlCenter
.Offset(, 2) = WorksheetFunction.SumIf(Columns(1), Cells(i - 1, 1), Columns(3))
End With
End If
Next i
End Sub 'この行まで

※ 余計なお世話かもしれませんが、A列に「小計」と表示するようにしてみました。
参考になりますかね?m(_ _)m
    • good
    • 0

VBAの力でも借りないと無理ですね。


ピボットテーブルで集計した結果ではダメなのでしょうか。
その方が、よっぽどすっきりすると思うのですが。

D列で良ければ
D2セルに(D1セルは何もなしで)
=IF(C2="",SUMIF(A:A,A1,C:C),"")
と入れて下までコピーしてみてください。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!