Excel VBA質問箱 IV

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

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


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

【47931】5000個のデータを高速処理する方法を教えてください カド 07/3/27(火) 8:07 質問[未読]
【47934】Re:5000個のデータを高速処理する方法を教... ひげくま 07/3/27(火) 9:15 発言[未読]
【47939】Re:5000個のデータを高速処理する方法を教... カド 07/3/27(火) 10:33 質問[未読]
【47937】Re:5000個のデータを高速処理する方法を教... Ned 07/3/27(火) 10:17 発言[未読]
【47941】Re:5000個のデータを高速処理する方法を教... カド 07/3/27(火) 10:51 お礼[未読]

【47931】5000個のデータを高速処理する方法を教え...
質問  カド  - 07/3/27(火) 8:07 -

引用なし
パスワード
   下記のコードにて、
データを小数点以下5桁に変換していますが、
データ数が5000個と多いので処理時間が掛かってしまいます。

これを高速で処理できる良い方法があれば教えてください。

Set base = ActiveCell 'Range("h1")

For Each x In Range(ActiveCell, ActiveCell.Offset(5000, 0))

  x.Formula = "=" & "ROUND(" & x & ",5" & ")"
  Set base = base.Offset(1, 0)
Next

【47934】Re:5000個のデータを高速処理する方法を...
発言  ひげくま  - 07/3/27(火) 9:15 -

引用なし
パスワード
   ▼カド さん:
こんにちは。

>Set base = ActiveCell 'Range("h1")
>
>For Each x In Range(ActiveCell, ActiveCell.Offset(5000, 0))
>
>  x.Formula = "=" & "ROUND(" & x & ",5" & ")"
>  Set base = base.Offset(1, 0)
>Next

Set base = base.Offset(1, 0)
Do Loop であれば、この↑コードは必要でしょうけど、For Each Next を使うのであれば、必要ないと思いますよ。
検証していないので、このコードを省いてどれだけ早くなるのかは判りませんが。

【47937】Re:5000個のデータを高速処理する方法を...
発言  Ned  - 07/3/27(火) 10:17 -

引用なし
パスワード
   ▼カド さん:
こんにちは。
Formulaである必要はありますか?
=ROUND(セルの実値,5)
なんていう式になってますが......
その場合でも
x.Formula = "=ROUND(" & x.Value & ",5)"
でいいかと^ ^
(でも、Formulaよりも表示形式で制御したほうが良いような気もします)


ValueにしてしまっていいのならLoopせずにすむのですが......
With ActiveCell.Resize(5000)
  .Value = Application.Round(.Cells, 5)
End With
......な感じ。

【47939】Re:5000個のデータを高速処理する方法を...
質問  カド  - 07/3/27(火) 10:33 -

引用なし
パスワード
   ひげくま さん 回答ありがとうございます。

おっしゃるとおりですね。
でも15秒が0.5秒短縮できる程度でした。

【47941】Re:5000個のデータを高速処理する方法を...
お礼  カド  - 07/3/27(火) 10:51 -

引用なし
パスワード
   ▼Ned さん:
回答ありがとうございます。

>x.Formula = "=ROUND(" & x.Value & ",5)"
これの場合ほとんど処理時間は変わりませんでした。


>ValueにしてしまっていいのならLoopせずにすむのですが......
>With ActiveCell.Resize(5000)
>  .Value = Application.Round(.Cells, 5)
>End With
>......な感じ。

これで問題ないので採用させて頂きました。
トータル時間が30秒から0.5秒で処理できるようになりました。

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