- ベストアンサー
データを入力して自動で合計が次の行に入るやり方がわかりません
エクセルの初心者です。 現在仕事で JOBNO 月日 客先 品名 型番 A代 B代 C代 D代 合計 ○○ ○○ ○○ ○○ ○○ ○○ ○○ ○○ ○○ ○○ ・・・ △△ △△ △△ △△ △△ △△ △△ △△ △△ △△ ・・・ といった形でひたすらデータを入力してるんですが、 JOB一纏まりが入力された時点で、その次の行に JOB 月日 客先 ABCD代の各合計と総合計を自動で入れられるボタンの マクロを作りたいと思ってるのですがどうすればいいのかがわかりません。 どんな構文を書けばいいんでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
A代(F列)~合計(J列)最終行の1行下に合計を入れたいということでよいでしょうか? 以下のマクロをALT+F11でVBE画面を開き、「VBAProjectエクスプローラのシート名右クリック」→「挿入」→「標準モジュール」で表示される画面にペーストして下さい。実行はシート画面に戻って、ALT+F8を押してマクロ一覧からマクロ名を選択して実行します。 Sub Macro1() Dim idx As Integer Dim insRow As Long For idx = 6 To 9 insRow = Application.Max(insRow, Cells(65536, idx).End(xlUp).Row + 1) Next For idx = 6 To 10 Cells(insRow, idx).FormulaR1C1 = "=SUBTOTAL(9,R2C[0]:R[-1]C[0])" Next idx End Sub どの行も必ずA代~D代が入力されるか分からないので、各列の最大行を一旦求めるようにしました。またSUBTOTAL関数を使用するので合計行の下に再度データを追加しても合計を2回足し込むことはないです。
その他の回答 (2)
- zap35
- ベストアンサー率44% (1383/3079)
#02です >他のシートで例えばjobNOで検索したらここから引っ張ってくるような感じにしたいわけです 集計行を挿入するシートは別シートだったのですか? それならば、実現方法はAdvancedFilterでも行コピーでも何でも良いのですが、JobNOが合致する行だけを別シートにコピーして、最後に集計行を入れる方法でよいのではないでしょうか。
お礼
あ、なるほど! そっちの最後に集計行をいれればいいんですね! 私も指示を出してきた上司も殆ど素人なもので こーしたい、あーしたいとやりたいことと 出来ることがなかなか一致しないものでして・・・。 色々手助けありがとうございます! もっともっと勉強していこうと思います。
- ASIMOV
- ベストアンサー率41% (982/2351)
>JOB 月日 客先 ABCD代の各合計と総合計 「ABCD代の各合計」は解りますが「JOB 月日 客先」は何を合計するのでしょうか? カウントかな?
補足
説明不足で申し訳ありませんでした。 「JOB 月日 客先」はそのまま同じものをコピーするだけなのです。 自分で色々といじってるんですが JOBNOだけオートフィルタで抽出して 抽出した範囲の合計を出せばいいのかなとか思ったんですが どうもうまくいかなかったです。。
お礼
わざわざ作ってくれたのですね、ありがとうございます。 最終行の1行下に合計を入れたいということであってるのですが その合計を入れた行の下にまた新しいのをどんどん入力していると 最初から全部が合計されてしまいました。 TOTAL?関数なので当たり前なのかもしれませんが。 このデータ入力はデータベースとして使う予定で 他のシートで例えばjobNOで検索したら ここから引っ張ってくるような感じにしたいわけです。 そっちは色々と調べて Worksheets("データ入力").Range("A5:N65000").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:= _ Worksheets("検索用").Range("A4:N5"), CopyToRange:=Worksheets("検索用").Range("A9:N65050"), Unique:=False こんな感じでやってみて何とか動くようになりました。 もうちょっと関数を調べつつ試行錯誤してみます。 ありがとうございました。