- ベストアンサー
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 文 などを使うのでしょうか。 お詳しい方、教えて下さい。 必ずお返事致します。
- みんなの回答 (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
その他の回答 (1)
- uruz
- ベストアンサー率49% (417/840)
ループ回数が決まっているのなら For ~ Next文 ループを条件で脱けるのなら Do ~ Loop文 条件および回数で脱けるのなら Do ~ Loop文 または For ~ Exit Do ~ Next文
お礼
回答ありがとうございます。 よくわかりました。For ~ Next文でやろうと思います。
お礼
具体的にサンプルコードを書いて頂き、ありがとうございます。 >Sum関数を利用した方が、エリアが広い時は高速に処理を行う事が出来ます。 なるほど、同じ結果が得られるコード内容でも、 処理速度の速い、遅いがあるわけなんですね。 今回の場合、回すよりSumで処理した方が速い、と。 大変参考になりました。 また色々と教えて下さい。