秘密基地、どこに作った?

VBA初心者です

B~F列の合計にSUM関数を入力したいです。
後々範囲を確認できるよう、値ではなくSUM関数で入力をしたいのですが、
記述がわからなく教えてください。

※A列は担当者が毎回増えたり減ったりしますので、
 合計を入力する行(最終行)は都度かわるとします

よろしくお願いいたしますm(__)m

「VBA SUM関数を入力したい」の質問画像

A 回答 (6件)

こんにちは。



自分なら合計欄を上に持っていきます。
B2セル数式
  =sum(b3:b500)
で後は横方向にフィルコピー。利点は、

1. データ追加で数式を見直す必要なし
2. ウィンドウ枠固定で常に集計行が表示される

です。集計行をいちいち探す手間がありません。

または、テーブル化して集計行を設けるかでしょうか。多分VBAは使わないでしょう。
    • good
    • 0

#3様の回答内容に賛成です



学習の為のご質問と理解していますが、
もし、この処理をVBAで行う場合の多くは
他の処理内や組み合わせで、関数入力でなく
計算結果を出力(取得)するなどになります

>短い構文で記述することはできますか?
実行起点、範囲が不明確なので課題が残るコードですが

With Selection
.Formula = "=SUM(" & Range(Cells(4, .Column), Cells(.Row - 1, .Column)).AddressLocal(0, 0) & ")"
End With
    • good
    • 0

cは列番号で、A列が1、B列が2、、となります。



適当に書いてすみません。笑

でも基本は勉強してからの方が、効率がいいですよ。
    • good
    • 0

横から失礼します。



想像するところ、ご提示の例で4~6行の範囲の行数が変わるので、それに応じて合計したいということではないかと推測しました。

別にVBAに頼らなくても、普通にセルにSUM関数を設定しておけば良いのではないでしょうか?
(よくわからないVBAを使ったり、いちいち実行する必要もなくなります)

行を追加したいときは5~7行のどこかを選択して、「挿入」で追加すれば、SUM関数の範囲は自動的に追従して広がってくれます。
行の削除も同様で、削除すればSUM関数の範囲が縮小されます。
    • good
    • 2

こんばんは


書き方はいろいろありますが・・・
Dim trg As Range
Set trg = Range("A:A").Find(What:="合計", LookIn:=xlValues, LookAt:=xlWhole)
If Not trg Is Nothing Then
trg.Offset(, 1).Resize(, 5).Formula = _
"=SUM(" & Range(Cells(4, trg.Offset(, 1).Column), trg.Offset(-1, 1)).AddressLocal(0, 0) & ")"
End If

基準の合計の入っているセルを探しています
この条件が一致しないと正しく処理できません

>後々範囲を確認できるよう
VBAもあとあとわからなくなりそう・・・かな
    • good
    • 2
この回答へのお礼

回答ありがとうございます!

合計の横のセルを探しているんですね
今の自分にはちょっと難しいです(><)
短い構文で記述することはできますか?

お礼日時:2022/08/21 07:54

cells(r,c).formula="=sum(""B4:B6"")"



こんな感じで数式を代入できると思います。
    • good
    • 2
この回答へのお礼

回答ありがとうございます。

r = Cells(Rows.Count, 1).End(xlUp).Row

c = には何が入りますか?(><)

お礼日時:2022/08/21 07:51

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

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報