- ベストアンサー
エクセルで空白行にSUM関数を自動入力する方法
- エクセルでデータ行数の決まっていない空白行に自動でSUM関数を入力する方法について教えてください。
- 実際のデータは3千行ほどあるため、効率的に自動でSUM関数を入力する方法が知りたいです。
- 質問のデータ例では、(SUM)表記のセルにそれぞれのデータのSUM関数を自動で入れたいです。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
C1からC列の最終行+1行(たとえばC1:C3000)までの範囲を選択して、 [ジャンプ]-[セル選択]-[空白セル] [SUM]を入れるセルだけが選択されますので、[Σ]を押します。 たぶんこの操作でお望みどおりになると思います。
その他の回答 (4)
- MarcoRossiItaly
- ベストアンサー率40% (454/1128)
通し番号を振った上で、集計、オートフィルタ、ピボットテーブルなどを利用するのが手軽だとは思いますが…。 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)」と書いてある各セルは、実際には未入力だと解釈して回答文を作成しています)
- mar00
- ベストアンサー率36% (158/430)
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
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! 質問では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
- hallo-2007
- ベストアンサー率41% (888/2115)
VBAの力でも借りないと無理ですね。 ピボットテーブルで集計した結果ではダメなのでしょうか。 その方が、よっぽどすっきりすると思うのですが。 D列で良ければ D2セルに(D1セルは何もなしで) =IF(C2="",SUMIF(A:A,A1,C:C),"") と入れて下までコピーしてみてください。
お礼
この方法は違う列でも出来ますし、 他にも応用が利きそうですね。 業務短縮につながります。 ありがとうございました。