【ExcelVBA】セルをコピー&ペーストする 高速化する方法

こんなあなたにおすすめ

・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で覚えておくべき関数 作業効率アップ間違いなし

【Excelについて学びたい方】
Excel 最強の教科書[完全版]
【Excel VBAについて学びたい方】
Excel VBA 脱初心者のための集中講座
エンジニアを目指すなら、TechAcademy!
オンラインスクール受講者数No.1!

・自宅にいながらオンライン完結で勉強できる
➡スクールへの移動時間を削減するため、効率的に学習可能!

・受講生に1人ずつ現役のプロのパーソナルメンターがつく
➡分からないことがわかるまで徹底的にメンターに質問可能!

・チャットで質問すればすぐに回答が返ってくる
➡レスポンスが速いから、わからないことをその場で解決!

・オリジナルサービスやオリジナルアプリなどの開発までサポート
➡就職、転職のときに役立つポートフォリオを開発可能!

無料で体験できるので、まずはお試し
>>TechAcademyの無料体験はこちら

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です