No.3ベストアンサー
- 回答日時:
プログラムの質問をする時には余計な話しを色々前振りするより、何がしたいのか、どうやっているのか、端的に書いた方が良いです。
コードを書く時にも同じです、コンピュータに無駄な事をやらせないで、端的にコーディングした方が良いです。
このプログラムは、かなり面倒な書き方してますが、これをそのまま使って合計行を作るとなると…
小計の合計コードを、総計セルに入れたいのであれば、小計でやっている合計コードを全部継ぎ足してぶち込むのが簡単です。
> ' 合計コード格納用変数の宣言と初期化
> Dim g As String
> g= "=0.00"
> ' 小計コードが下記で正しいと仮定
> Cells(i, 2).FormulaR1C1 = "=SUM(R[-1]C:R[" & k - i & "]C)"
> ' 小計コードと同様の文字列を合計用に加算
> g= g & "+SUM(R[-1]C:R[" & k - i & "]C)"
> ' 全ての小計処理が終了したNext以降に合計コードを埋める
> ' (セル位置は仮に24とした)
> Cells(24, 1).Value = "総計"
> Cells(24, 2).FormulaR1C1 = g
因にこれ以降は余談ですが…
・i と k の型は Integer で十分です。
・for を 1 個飛ばしにする時には for i=3 to 20 step 2 で良いです。
・わざわざ値を formula で入れてますが計算をVBA側で行うなら value で値を突っ込んじゃった方がもっと簡単に書けます。
・同じ index を指し示すのに i と k で設定をわけるとバグの原因になるので起点と移動量を別途にした方が綺麗に書けます。
返信ありがとうございます。
SUM関数の代わりにsubtotalを使用したら
うまくいけました。
>・同じ index を指し示すのに i と k で設定をわけるとバグの原因になるので起点と移動量を別途に
>した方が綺麗に書けます
そうなんですね。。
勉強になりました!
No.2
- 回答日時:
No.1
- 回答日時:
えーと説明が良く読み取れないのですが…
B列に入っている数値を幾つか足して総計をとりたい?ですか?
まず、SUM 関数は括弧内を全て足し算してくれます。
例えば = SUM(B5, B10, B20) と書くと B5+B10+B20 の結果です。
また、= SUM(B5,B6,B7,B8) と書く変わりに = SUM(B5:B8)とかけます。
これらの複合も可能で = SUM(B5:B8,B10,B20) などとも書けます。
あと、セルの中に = 付けて数式を書くだけの事は VBA とは余り言いません。
スクリプト用のシートにプログラムを書くコーディングをVBAと呼びます。
説明不足で申し訳ありません。
下記のコードに合計行を追加したい次第です。
Sub test1()
Dim i As Long
Dim k As Long 'SUM式の起点を記憶させるため
k = 2 '起点初期値
For i = 3 To 20 'A3からA20までLoop
If Cells(i, 1).Value = "小計" Then
Cells(i, 2).FormulaR1C1 = "=SUM(R[-1]C:R[" & k - i & "]C)"
'1行スキップ
i = i + 1
'次の起点を記憶
k = i
End If
Next
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) SUBTOTAL SUMIF?? 2 2023/03/16 11:25
- Excel(エクセル) アウトラインの小計のやり方 1 2023/03/20 11:51
- Excel(エクセル) VBA SUM関数を入力したい 6 2022/08/20 20:10
- Excel(エクセル) VBA オリジナル関数で選択セルの合計を作成したい 3 2023/03/19 19:45
- Visual Basic(VBA) 列の最終行までのセルと1つ隣のセルの合計を別の列に表示 2 2022/07/12 19:50
- Excel(エクセル) Countifよりも早く重複数をカウントする方法ありますか? 18 2022/07/04 13:39
- Excel(エクセル) 【VBA】元のシート内の文字列を別シートと比較し、一致したら元のシートの別のセルへ転記する方法。 3 2023/03/23 17:30
- Excel(エクセル) エクセル・スプレッドシートで、一定数を超えたらゼロから再累計する方法 8 2022/05/28 03:52
- Excel(エクセル) 別シートに毎回異なるデータをコピーする 7 2022/06/24 09:02
- Visual Basic(VBA) Excel のユーザー定義関数でソルバーが動作しない 1 2022/09/05 19:51
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
B列の最終行までA列をオート...
-
Excelで、あるセルの値に応じて...
-
vba 2つの条件が一致したら...
-
VBA 何かしら文字が入っていたら
-
Worksheets メソッドは失敗しま...
-
URLのリンク切れをマクロを使っ...
-
文字列の結合を空白行まで実行
-
Cellsのかっこの中はどっちが行...
-
VBAを使って検索したセルをコピ...
-
VBAを用いて条件付きの平均値、...
-
セルに値が入っていた時の処理
-
エクセル 2つの表の並べ替え
-
VBAでエラーインジケーターにつ...
-
[ASP+SQL]絞込み済みのレコード...
-
rowsとcolsの意味
-
C#で複数列をもつデータソース...
-
Excel マクロ VBA 別シートのセ...
-
IIF関数の使い方
-
エクセル VBA ユーザーフォー...
-
【VBA】2つのシートの値を比較...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Worksheets メソッドは失敗しま...
-
Cellsのかっこの中はどっちが行...
-
VBAのコードを教えてください
-
VBAを使って検索したセルをコピ...
-
B列の最終行までA列をオート...
-
エクセルvbaについて
-
vba 2つの条件が一致したら...
-
Excelで、あるセルの値に応じて...
-
VBA UserFormからの転記で
-
VBAのFind関数で結合セルを検索...
-
文字列の結合を空白行まで実行
-
IIF関数の使い方
-
VBA 何かしら文字が入っていたら
-
マクロ 最終列をコピーして最終...
-
Changeイベントでの複数セルの...
-
エクセルVBAにて =A1=B1とすれ...
-
【VBA】2つのシートの値を比較...
-
データグリッドビューの一番最...
-
VBマクロ 色の付いたセルを...
-
VBAで指定範囲内の空白セルを左...
おすすめ情報