こんなあなたにおすすめ
・Excel VBAでコピー&ペースト処理を高速化したい
Excelを使っているとかなりの頻度でコピー&ペーストをすると思います。
コピー&ペーストを繰り返し処理する場合、高速化することで時間を削減することができます。
>>【ExcelVBA】For Next文 繰り返し(ループ)処理
自動でやるからといってもやっぱり処理時間は短い方がいいですよね。
今回は、Excel VBAでコピー&ペーストで処理を高速化する方法について解説します。
コピー&ペースト処理を高速化したい
マクロの記録で作成したコード
↓Copy部は、14~17行目
Sub test1() Application.ScreenUpdating = False '画面更新をオフにする Dim i As Long Dim startTime As Double Dim finishTime As Double Dim processTime As Double startTime = Timer() For i = 1 To 100 Range("A1").Select 'A1セルを選択する Selection.Copy '選択したセルをコピーする Range("B2").Select 'B2セルを選択する ActiveSheet.Paste 'アクティブシートに貼り付ける Next finishTime = Timer() processTime = finishTime - startTime MsgBox "処理時間:" & Format(processTime, "#.##") Application.ScreenUpdating = True '画面更新をオンにする End Sub
Copyメソッドを使う
↓Copyメソッド部は、14~16行目
Sub test2() Application.ScreenUpdating = False '画面更新をオフにする Dim i As Long Dim startTime As Double Dim finishTime As Double Dim processTime As Double startTime = Timer() For i = 1 To 100 '"Sheet1のA1セルの値をコピーし、B2セルに貼り付ける Worksheets("Sheet1").Range("A1").Copy _ Destination:=Worksheets("Sheet1").Range("B2") Next finishTime = Timer() processTime = finishTime - startTime MsgBox "処理時間:" & Format(processTime, "#.##") Application.ScreenUpdating = True '画面更新をオンにする End Sub
↓Copy部は、14行目
数式を使う
Sub test3() Application.ScreenUpdating = False '画面更新をオフにする Dim i As Long Dim startTime As Double Dim finishTime As Double Dim processTime As Double startTime = Timer() For i = 1 To 100 Worksheets("Sheet1").Range("B2") = Worksheets("Sheet1").Range("A1") Next finishTime = Timer() processTime = finishTime - startTime MsgBox "処理時間:" & Format(processTime, "#.##") Application.ScreenUpdating = True '画面更新をオンにする End Sub
結果
以下の表からわかるように、簡単に記述したコードの方が、高速に処理できていることがわかります。
数式に限っては、100回でも1000回でも大して処理時間に差が出ていません。
処理を高速化したい場合は、数式を使うのがおすすめです。
メソッド | 10回 | 100回 | 1000回 |
---|---|---|---|
マクロの記録 | 0.15s | 1.43s | 13.88s |
Copyメソッド | 0.09s | 0.77s | 8.02s |
数式 | 0.00s | 0.02s | 0.07s |
まとめ
ここまで、コピー&ペーストを高速化する方法について解説しました。
数式を使った方法が最も早いため、数式を使った方法をおすすめします。
セルのコピー&ペーストについては、下記の記事で解説していますので、ご参照ください。
>>【ExcelVBA】セルをコピー&ペーストする方法 Copy & Pasteメソッド
複数セルのコピー&ペーストについては、下記の記事で解説していますので、ご参照ください。
>>【ExcelVBA】複数セルをコピー&ペーストする方法 Copy & Pasteメソッド
Excelで作業効率をアップしたい方は、下記の記事もご参照ください。
>>Excelのショートカット一覧 覚えて作業効率アップ!!
>>Excelで覚えておくべき関数 作業効率アップ間違いなし
オンラインスクール受講者数No.1!
・自宅にいながらオンライン完結で勉強できる
➡スクールへの移動時間を削減するため、効率的に学習可能!
・受講生に1人ずつ現役のプロのパーソナルメンターがつく
➡分からないことがわかるまで徹底的にメンターに質問可能!
・チャットで質問すればすぐに回答が返ってくる
➡レスポンスが速いから、わからないことをその場で解決!
・オリジナルサービスやオリジナルアプリなどの開発までサポート
➡就職、転職のときに役立つポートフォリオを開発可能!
無料で体験できるので、まずはお試し
>>TechAcademyの無料体験はこちら