- - PR -
【VBA】列の移動に時間がかかる
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2006-03-10 17:31
お返事遅れました。
まず、TEMP_WORKSHEETSの他に コピーするにあたり後述する結合部分を解除しなければならないため もうひとつオリジナル(BUNSEKI_DATA_ORIGINAL)の複製として 「BUNSEKI_DATA_ORIGINAL_COPY」シートを新しく作成しています。 todoさんの手法を用いて Worksheets(TEMP_WORKSHEETS).Range("G1:G10000").Formula = Worksheets(BUNSEKI_DATA_ORIGINAL_COPY).Range("D1:D10000").Formula ・ ・ ・ と書いた所、プログラム開始位置からここのコピー箇所までが36秒でした。 その後の処理を含めて、総時間1分6秒という結果です。 もう少し早く出来るのではと思っていますが、TEMPシートにコピーするために、 元データ(BUNSEKI_DATA_ORIGINAL_COPY)の結合部分を Worksheets(BUNSEKI_DATA_ORIGINAL_COPY).Activate Worksheets(BUNSEKI_DATA_ORIGINAL_COPY).Rows.Select Selection.MergeCells = False で解除するのと(解除なしではコピーできませんでした)、 結合解除のためのBUNSEKI_DATA_ORIGINAL_COPYシートを作成しなければならないため時間がかかっています。 さすがにこれは仕方ないでしょうか。。。 ちなみに現在集計するデータは縦2500×横20です。 また、todoさんから提示頂いた手法の部分を、「A1」といった決め打ちではなく 少し柔軟性を持たせたく、変数化しようと下記のようにしたのですがオブジェクトエラーが出てしまいました。 Worksheets(TEMP_WORKSHEETS).Range(Cells(1, StartColumnCell + 3), Cells(10000, StartColumnCell + 3)).Formula = Worksheets(BUNSEKI_DATA_ORIGINAL_COPY).Range(Cells(1, StartColumnCell), Cells(10000, StartColumnCell)).Formula …Rangeの使い方を間違ってるだけでしょうか? 初歩的な質問ですみません。 |
|
投稿日時: 2006-03-10 18:51
Cellsの使い方が拙そうですね。
Worksheets(BUNSEKI_DATA_ORIGINAL_COPY).Cells(1, StartColumnCell) |
|
投稿日時: 2006-03-16 13:14
todoさん、お返事遅れてすみません。
ご指摘頂いた方法で無事動作しました。 ありがとうございました。 何か気持ち速度が下がった気もしましたが、恐らく気のせいでしょう^^; |