Excel VBA質問箱 IV

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

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


13200 / 13644 ツリー ←次へ | 前へ→

【6564】ワークシート関数SUMをVBAで組みたいのですが。 翡翠 03/7/10(木) 0:38 質問
【6565】Re:ワークシート関数SUMをVBAで組みたいので... こうちゃん 03/7/10(木) 9:29 回答
【6566】Re:ワークシート関数SUMをVBAで組みたいので... 翡翠 03/7/10(木) 11:01 お礼
【6567】HELPを活用してね。 こうちゃん 03/7/10(木) 11:09 発言

【6564】ワークシート関数SUMをVBAで組みたいので...
質問  翡翠  - 03/7/10(木) 0:38 -

引用なし
パスワード
   異なるブック(Book1)のデータを「Book2」に反映させ、各ブロック毎に小計を出すマクロを組みたいと考えています。
現在は、「Book1」のデータを「作業用Book」にコピーをし、集計表を作成するVBA 
ActiveCell.CurrentRegion.Select
Selection.Subtotal groupby:=1, Function:=xlSum, totallist:=Array(3, 4, 5))

・・・を実行後、改めて「Book2」にコピーしています。この場合、「作業用Book」上に貼り付けた元データの小計行を都度削除する必要があり、なおかつ「Book2」へ・・・と手間の掛かる方法で作業しています。
元データにある小計行を活かし、SUM関数で小計を出すことは可能でしょうか?
ご教授願います。

表のサンプルは以下の通りです。

ブロック名    地域名    金額    金額    金額
A地区         A-1    11,111     44,444     77,777
A地区         A-2    22,222     55,555     88,888
A地区         A-3    33,333     66,666     99,999
A地区計                
B地区         B-1    44,444     77,777     111,110
B地区         B-2    55,555     88,888     122,221
B地区         B-3    66,666     99,999     133,332
B地区         B-4    77,777     111,110     144,443
B地区計                
C地区         C-1    88,888     122,221     155,554
C地区         C-2    99,999     133,332     166,665
C地区         C-3    111,110     144,443     177,776
C地区         C-4    122,221     155,554     188,887
C地区計

【6565】Re:ワークシート関数SUMをVBAで組みたいの...
回答  こうちゃん E-MAIL  - 03/7/10(木) 9:29 -

引用なし
パスワード
   翡翠さん、こんにちは

>元データにある小計行を活かし、SUM関数で小計を出すことは可能でしょうか?
>ご教授願います。
>表のサンプルは以下の通りです。
>
>ブロック名    地域名    金額    金額    金額
>A地区         A-1    11,111     44,444     77,777
>A地区         A-2    22,222     55,555     88,888
>A地区         A-3    33,333     66,666     99,999
>A地区計                
>B地区         B-1    44,444     77,777     111,110
>B地区         B-2    55,555     88,888     122,221
>B地区         B-3    66,666     99,999     133,332
>B地区         B-4    77,777     111,110     144,443
>B地区計                
>C地区         C-1    88,888     122,221     155,554
>C地区         C-2    99,999     133,332     166,665
>C地区         C-3    111,110     144,443     177,776
>C地区         C-4    122,221     155,554     188,887
>C地区計

思いっきりベタですが、なにかの参考になれば・・

Sub test()
  Dim MaxRow As Long
  Dim i As Long
  Dim j As Integer
  Dim s As Long
  
  MaxRow = Range("A65536").End(xlUp).Row

  s = 0
  For i = 2 To MaxRow
    If Right(Cells(i, 1).Value, 1) = "計" Then
      For j = 3 To 5
        Cells(i, j).FormulaR1C1 = "=SUM(R[-1]C:R[-" & s & "]C)"
      Next
      s = 0
    Else
      s = s + 1
    End If
  Next

End Sub

【6566】Re:ワークシート関数SUMをVBAで組みたいの...
お礼  翡翠  - 03/7/10(木) 11:01 -

引用なし
パスワード
   こうちゃんサマ

早速のレスポンス、ありがとうございます。
この数日、自力解決を目指し格闘(?)してまいりましたが、知識不足ゆえの手詰まり状態でした。
ご教授いただいたコードを実行させていただいたところ、すっきり解決!
ありがとうございました♪

追:
VBAの実用書(?)がたくさん出版されていますが、果たしてどれを買ったらよいものか悩むところです・・・ 用途にもよると思いますが、お奨め書があれば教えてください。EXCELでの作業を少しでも簡略化させられればと考えています。
因みに私は以前数冊のExcelVBA本を購入し、活用できそうな部分をPick upするという拙い知識しか持ち合わせていません。

【6567】HELPを活用してね。
発言  こうちゃん E-MAIL  - 03/7/10(木) 11:09 -

引用なし
パスワード
   翡翠さん、こんにちは

既に数冊お持ちとのこと、そちらを使いこなすように努力するのが吉!
その際、HELPを活用してください。
私は、特殊な処理以外は、HELPとこちらのようなQ&AサイトやWeb検索で勉強しています。^^

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