• ベストアンサー

Range("A" & x) + Range("A" & x+1) +

Range("A" & x) + Range("A" & x+1) + Range("A" & x+2) + ・・・ + Range("A" & x+n) x:変数(基準点) n:定数(A列のセルをいくつ足し併せるか、を指定。) 上記プログラムをループ的に行うには、どういう書き方をすれば良いでしょうか? Do ~ Loop 文 などを使うのでしょうか。 お詳しい方、教えて下さい。 必ずお返事致します。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

>上記プログラムをループ的に行うには、どういう書き方をすれば良いでしょうか? >Do ~ Loop 文 などを使うのでしょうか。 との質問には、#1のuruzさんが言われているように、For Nextが適していると思います。 ただ回す考え自体を除外してもよいのであれば、Sum関数を利用した方が、エリアが広い時は高速に処理を行う事が出来ます。 Option Explicit Private Const x As Long = 1 Private Const N定数 As Long = 65535 Sub Test()   Dim dbl1 As Double   Dim dbl2 As Double   Dim cur結果   '----------------   ' 検証1(回す)   '----------------   dbl1 = Now   cur結果 = サンプル1(N定数)   dbl2 = Now   MsgBox "サンプル1(回す):" & cur結果 & vbTab & "計測時間" & dbl2 - dbl1   '----------------   ' 検証2(Sum)   '----------------   dbl1 = Now   cur結果 = サンプル2(N定数)   dbl2 = Now   MsgBox "サンプル2(Sum):" & cur結果 & vbTab & "計測時間" & dbl2 - dbl1 End Sub Function サンプル1(n As Long) As Currency   Dim i As Long   For i = 0 To n     サンプル1 = サンプル1 + Range("A" & x + i)   Next i End Function Function サンプル2(n As Long) As Currency   Dim rng始点 As Range   Dim rng終点 As Range   Dim rng範囲 As Range      Set rng始点 = Range("A" & x)   Set rng終点 = rng始点.Offset(n)      Set rng範囲 = Range(rng始点, rng終点)   サンプル2 = WorksheetFunction.Sum(rng範囲) End Function

aw-dlay
質問者

お礼

具体的にサンプルコードを書いて頂き、ありがとうございます。 >Sum関数を利用した方が、エリアが広い時は高速に処理を行う事が出来ます。 なるほど、同じ結果が得られるコード内容でも、 処理速度の速い、遅いがあるわけなんですね。 今回の場合、回すよりSumで処理した方が速い、と。 大変参考になりました。 また色々と教えて下さい。

その他の回答 (1)

  • uruz
  • ベストアンサー率49% (417/840)
回答No.1

ループ回数が決まっているのなら For ~ Next文 ループを条件で脱けるのなら Do ~ Loop文 条件および回数で脱けるのなら Do ~ Loop文 または For ~ Exit Do ~ Next文

aw-dlay
質問者

お礼

回答ありがとうございます。 よくわかりました。For ~ Next文でやろうと思います。

関連するQ&A