![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
vbaでシステムの効率化をしている
エンジニアです。
添付の図のような表に100件~1000件
の可変するデータが入ります。
右の4つのコミッションを合計して小計のところに自動計算したいのですが
データ量が変動するため(この表の上下のデータ量も変動する)
vbaで何行目から何行目を合計するという指定ができません
Q&Aを見ていくと
offset関数・名前の定義をうまく使ったらいいとあり
Worksheets("Sheet1").Names.Add Name:="名前A"
RefersTo:=Range("コミッション1")
Worksheets("Sheet1").Names.Add Name:="名前B"
RefersTo:=Range("(2)小計")
ActiveCell.Offset(-3, 2).Range("名前A:名前B").Select
ActiveCell.Offset(15, 2).Range("名前A").Activate
ActiveCell.FormulaR1C1 = "=SUM(R[-18]C:R[-1]C)"
ActiveCell.Offset(-18, 0).Range("名前A:名前B").Select
End If
これで合計できると思うのですが、
どなたか添削していただけないでしょうか?
![「VBA 可変行のデータを自動集計する」の質問画像](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/f/1060544_5497d2bf82def/M.jpg)
No.1ベストアンサー
- 回答日時:
変なセル選択してそうですし、Formula固定値じゃ可変行になりませんよね。
定義済みの名前を使えば名前再定義は不要、Offset,Select,Activateも不要に思えます・・・
混乱するようなら、すべきこと整理すると、
・合計範囲のアドレスを取得(rowだけでいい)
・"=SUM(...)"の式を、アドレスから生成する
・小計セルに式を入れる
結果、たぶんこんな感じで↓
r = Range("なんとか1").row - Range("小計").row
Range("小計").FormulaR1C1 = "=SUM(R[" & r & "]C:R[-1]C)"
ちなみに、ActiveCell,Offset,Rangeはいずれも、"Range"つまりセル範囲を返します。Range.Range()は、元セルを基準とした相対位置になり、混乱を招くので使用は控えた方が。
以下、すべて同じ。
- Range("B3")
- Range("A1").Offset(2, 1)
- Range("A2").Range("B2")
- Range("A1").Offset(1, 1).Range("A2")
範囲調整は.Resize()
相対位置指定は、.Cells()のが分かりやすいです。
http://msdn.microsoft.com/ja-jp/library/microsof …
ただ、せめて動くか試した上で質問してほしいです。
試せば分かることは多いはず。
エンジニア名乗るなら尚・・・
情報がなければ試行錯誤するのが本職。添削だなんて学生じゃあるまいし、入門書読んだかも怪しいレベルで無料コーナーに頼ってるよーじゃダメですよ。
本当に助かりました!!
うまく伝わらなかったのですが、試行錯誤を重ねてたのです。
質問の仕方、説明が足りなくて誤解を招いてしまいました。
異国でIT担当者1人という状況で、強い焦りを出してしまいました。
本当にありがとうございました。
今度困った事があったら助けて下さい。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) EXCELのVBAについて 2 2023/07/05 17:17
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- Excel(エクセル) エクセルVBA VLOOKUPを使ってのカウント作業 2 2023/02/19 09:03
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 2 2022/06/25 22:42
- Visual Basic(VBA) 集計シートA列のコードと一致する右に並んだシート名(コード)の3行目から10行目をコピーして貼り付け 4 2022/08/18 15:24
- Visual Basic(VBA) エラーコード1004 6 2022/06/09 14:12
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
複雑なシフト表から1日ごとの...
-
名前を呼ばずに「すみません」...
-
AV女優の名前教えて
-
彼氏が「君」っていいます
-
Hの最中に違う女の名前を言わ...
-
今LINEの名前をフルネームで登...
-
「失礼ですが・・・」と名前を...
-
電話をかけてきて、社名だけで...
-
DNAの化学名って何ですか?
-
急に名前を呼ばれなくなった 職...
-
みなさん、恋人のLINEの名前は...
-
Androidに搭載されている連絡帳...
-
マイページとは?どこにありま...
-
AV女優の名前教えて
-
EXCEL 参照してフラグを立てる
-
AV女優の名前教えてください
-
やたら名前を呼ぶ?心理とは
-
人の名前を覚えられない人にイ...
-
郵便局で株の配当金を代理人が...
-
人の名前を呼べない友達
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
複雑なシフト表から1日ごとの...
-
名前を呼ばずに「すみません」...
-
彼氏が「君」っていいます
-
今LINEの名前をフルネームで登...
-
電話をかけてきて、社名だけで...
-
名前を呼ばれる方と、名前を呼...
-
みなさん、恋人のLINEの名前は...
-
Hの最中に違う女の名前を言わ...
-
AV女優の名前教えてください
-
「失礼ですが・・・」と名前を...
-
AV女優の名前教えて
-
彼氏が良く、「◯◯(私の名前)」...
-
人名にあまりふさわしくない名...
-
マイページとは?どこにありま...
-
メールで彼女の名前を打ち間違えた
-
ジャージのズボンで裾を絞って...
-
やたら名前を呼ぶ?心理とは
-
DNAの化学名って何ですか?
-
男性が女性の名前を呼ばないの...
-
イクときに彼女の名前を呼ぶ男...
おすすめ情報