Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


12384 / 13646 ツリー ←次へ | 前へ→

【10775】合計をだすマクロ RanRan 04/2/13(金) 15:09 質問
【10776】Re:合計をだすマクロ Asaki 04/2/13(金) 15:25 回答
【10779】Re:合計をだすマクロ RanRan 04/2/13(金) 16:06 発言
【10786】Re:合計をだすマクロ RanRan 04/2/13(金) 20:00 質問
【10788】Re:合計をだすマクロ Asaki 04/2/13(金) 22:54 回答
【10800】Re:合計をだすマクロ RanRan 04/2/14(土) 14:14 お礼

【10775】合計をだすマクロ
質問  RanRan  - 04/2/13(金) 15:09 -

引用なし
パスワード
    〈表〉          A1から表があり、列も行もどこまであるか分からない
   A B C D ...   表があるとします。表の中には1行目に項目が入っていて
 1 こ う  も  く    2行目から数字が各セルに入っています。
 2  2 9 6 5      A2からA列最後の数字の入っているセルまでの合計を
 3  3 1 2 7      出して、その合計を項目の入っている列まで右にオート
 4  7 8 1 8      フィルで合計を出したいのですが、どういう風にマクロ
 .             を作って良いか分かりません。
 .
 .  2 3 9 1      教えていただけませんか?
  合計→         ちなみに合計は、数字の入っている最後の行の2列下に
               入るようにしたいと思っています。
            
               よろしくお願いします!

【10776】Re:合計をだすマクロ
回答  Asaki  - 04/2/13(金) 15:25 -

引用なし
パスワード
   こんにちは。

A列の最終データの位置は
Range("A65536").End(xlUp)
で取得できます。
その2行下は Offset(2)
そのセルに、Sum() の数式を入れるのは如何でしょうか?

Sub test()
  With Range("A65536").End(xlUp)
    .Offset(2).Formula = "=SUM(A1:" & .Address(False, False) & ")"
    .Offset(2).Value = .Offset(2).Value
  End With
End Sub

取り敢えず、A列限定で。

【10779】Re:合計をだすマクロ
発言  RanRan  - 04/2/13(金) 16:06 -

引用なし
パスワード
   早速ありがとうございます。

2行下に合計を入れるのはその行に後で、入力しなければいけない物があるからです。
後で挿入して入れてもいいので、合計を出す行は数字の入っている最後の行のすぐ下
でも構いません。

【10786】Re:合計をだすマクロ
質問  RanRan  - 04/2/13(金) 20:00 -

引用なし
パスワード
   ▼Asaki さん:
>Sub test()
>  With Range("A65536").End(xlUp)
>    .Offset(2).Formula = "=SUM(A1:" & .Address(False, False) & ")"
>    .Offset(2).Value = .Offset(2).Value
>  End With
>End Sub
>
>取り敢えず、A列限定で。

では、「項目の入っている列までの合計をオートフィルで出す」マクロを入れて構文を
作るにはどうしたらいいですか?教えてください。

【10788】Re:合計をだすマクロ
回答  Asaki  - 04/2/13(金) 22:54 -

引用なし
パスワード
   1行目を基準に考えると、入力されている最後(一番右)のセルは
Ragne("IV1").End(xlToLeft)
で取得できます。

私が提示した例では、数式を設定する方法ですので、これは一気に代入できますので、
Sub test()
  Dim lngCol      As Long

  lngCol = Range("IV1").End(xlToLeft).Column
  With Range("A65536").End(xlUp)
    .Offset(2).Resize(, lngCol).Formula = "=SUM(A1:" & .Address(False, False) & ")"
    .Offset(2).Resize(, lngCol).Value = .Offset(2).Resize(, lngCol).Value
  End With
End Sub

オートフィルを使うのであれば、数式を設定した直後にオートフィルしてから、値を確定します。

【10800】Re:合計をだすマクロ
お礼  RanRan  - 04/2/14(土) 14:14 -

引用なし
パスワード
   分かりました。試してみたいと思います。

ありがとうございました!

12384 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free