Excel VBA質問箱 IV

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

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


44114 / 76735 ←次へ | 前へ→

【37643】集計処理速度を早くするには?
質問    - 06/5/13(土) 20:12 -

引用なし
パスワード
   こんばんわ。

下記のような表が、5列目〜31列目を会社A、32列目〜58列目を会社Bと26列毎に9会社あり、その会社毎に、日付と人の計を計算しています。
┌─┬──┬────┬──┬───┬───┬───┬──┬──┬──┬──
│ │A  │B    │C  │D   │E   │F   │・ │・ │AD │AE 
├─┼──┼────┼──┼───┼───┴───┴──┴──┴──┴──
│ 1│  │    │  │   │会社A                
├─┼──┼────┼──┼───┼───┬───┬──┬──┬──┬──
│ 2│No. │日付  │天気│曜日 │Aさん │Bさん │・ │・ │計 │累計
├─┼──┼────┼──┼───┼───┼───┼──┼──┼──┼──
│ 3│  │    │  │計  │   4│  4.5│  4│ 1.5│ 14│  
├─┼──┼────┼──┼───┼───┼───┼──┼──┼──┼──
│ 4│  1│ 4月26日│晴 │( 水 )│   1│   │  1│  │  2│  2
├─┼──┼────┼──┼───┼───┼───┼──┼──┼──┼──
│ 5│  2│ 4月27日│晴 │( 木 )│   │   1│  │  │  1│  3
├─┼──┼────┼──┼───┼───┼───┼──┼──┼──┼──
│ 6│  3│ 4月28日│晴 │( 金 )│   1│   1│ 0.5│  │ 2.5│ 5.5
├─┼──┼────┼──┼───┼───┼───┼──┼──┼──┼──
│ 7│  4│ 4月29日│晴 │( 土 )│   │   │  1│  │  1│ 6.5
├─┼──┼────┼──┼───┼───┼───┼──┼──┼──┼──
│ 8│  5│ 5月1日│晴 │( 月 )│   │  0.5│  │  1│ 1.5│  8
├─┼──┼────┼──┼───┼───┼───┼──┼──┼──┼──
│ 9│  6│ 5月2日│曇 │( 火 )│   1│   │  │  │  1│  9
├─┼──┼────┼──┼───┼───┼───┼──┼──┼──┼──
│10│  7│ 5月8日│曇 │( 月 )│   │   1│  1│  │  2│ 11
├─┼──┼────┼──┼───┼───┼───┼──┼──┼──┼──
│11│  8│ 5月9日│晴 │( 火 )│  0.5│   │  │  │ 0.5│11.5
├─┼──┼────┼──┼───┼───┼───┼──┼──┼──┼──
│12│  9│ 5月10日│雨 │( 水 )│   │   1│ 0.5│  │ 1.5│ 13
├─┼──┼────┼──┼───┼───┼───┼──┼──┼──┼──
│13│ 10│ 5月11日│雨 │( 木 )│  0.5│   │  │ 0.5│  1│ 14
└─┴──┴────┴──┴───┴───┴───┴──┴──┴──┴──
初めはSUM関数で処理していたのですが、行数が増えてくるとBookの容量が大きくなるのでマクロで処理するようにしたのですが、下記の記述では、処理に時間が掛かってしまいます。
Private Sub CommandButton2_Click()
Dim I, G, S As Integer
Dim L, R As Long
  Application.EnableEvents = False
  '行の計
     L = 0
   Do While Cells(L + 4, 2).Value <> ""
     Cells(L + 4, 30).Value = Application.WorksheetFunction.Sum(Range(Cells(L + 4, 5), Cells(L + 4, 29)))
     Cells(L + 4, 57).Value = Application.WorksheetFunction.Sum(Range(Cells(L + 4, 32), Cells(L + 4, 56)))
     Cells(L + 4, 84).Value = Application.WorksheetFunction.Sum(Range(Cells(L + 4, 59), Cells(L + 4, 83)))
     Cells(L + 4, 111).Value = Application.WorksheetFunction.Sum(Range(Cells(L + 4, 86), Cells(L + 4, 110)))
     Cells(L + 4, 138).Value = Application.WorksheetFunction.Sum(Range(Cells(L + 4, 113), Cells(L + 4, 137)))
     Cells(L + 4, 165).Value = Application.WorksheetFunction.Sum(Range(Cells(L + 4, 140), Cells(L + 4, 164)))
     Cells(L + 4, 192).Value = Application.WorksheetFunction.Sum(Range(Cells(L + 4, 167), Cells(L + 4, 191)))
     Cells(L + 4, 219).Value = Application.WorksheetFunction.Sum(Range(Cells(L + 4, 194), Cells(L + 4, 218)))
     Cells(L + 4, 246).Value = Application.WorksheetFunction.Sum(Range(Cells(L + 4, 221), Cells(L + 4, 245)))
     L = L + 1
   Loop
  '累計
   Cells(4, 31).Value = Cells(4, 30)
   Cells(4, 58).Value = Cells(4, 57)
   Cells(4, 85).Value = Cells(4, 84)
   Cells(4, 112).Value = Cells(4, 111)
   Cells(4, 139).Value = Cells(4, 138)
   Cells(4, 166).Value = Cells(4, 165)
   Cells(4, 193).Value = Cells(4, 192)
   Cells(4, 220).Value = Cells(4, 219)
   Cells(4, 247).Value = Cells(4, 246)
   
   For G = 27 To 216 Step 27
     Cells(4, 31 + G).Value = Cells(4, 30 + G)
   Next G
     R = 0
   Do While Cells(R + 5, 30).Value <> ""
     Cells(R + 5, 31).Value = Cells(R + 4, 31) + Cells(R + 5, 30)
     Cells(R + 5, 58).Value = Cells(R + 4, 58) + Cells(R + 5, 57)
     Cells(R + 5, 85).Value = Cells(R + 4, 85) + Cells(R + 5, 84)
     Cells(R + 5, 112).Value = Cells(R + 4, 112) + Cells(R + 5, 111)
     Cells(R + 5, 139).Value = Cells(R + 4, 139) + Cells(R + 5, 138)
     Cells(R + 5, 166).Value = Cells(R + 4, 166) + Cells(R + 5, 165)
     Cells(R + 5, 193).Value = Cells(R + 4, 193) + Cells(R + 5, 192)
     Cells(R + 5, 220).Value = Cells(R + 4, 220) + Cells(R + 5, 219)
     Cells(R + 5, 247).Value = Cells(R + 4, 247) + Cells(R + 5, 246)
     R = R + 1
   Loop
  '列の計
   For I = 5 To 247
     Cells(3, I).Value = Application.WorksheetFunction.Sum(Range(Cells(4, I), Cells(35536, I)))
   Next I
  Application.EnableEvents = True
End Sub
どのようにしたら、早く処理させることが出来るのか、自分なりには考えてみたのですが、さっぱり分からないので、御教授をお願いします。
0 hits

【37643】集計処理速度を早くするには? 06/5/13(土) 20:12 質問
【37646】Re:集計処理速度を早くするには? ハチ 06/5/14(日) 1:59 回答
【37653】Re:集計処理速度を早くするには? ハチ 06/5/14(日) 11:27 回答
【37695】Re:集計処理速度を早くするには? 06/5/15(月) 20:34 お礼
【37708】Re:集計処理速度を早くするには? ハチ 06/5/16(火) 9:59 発言
【37709】Re:集計処理速度を早くするには? ハチ 06/5/16(火) 10:08 発言
【37719】Re:集計処理速度を早くするには? 06/5/16(火) 19:00 お礼

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