ここから本文です

エクセルVBAの質問です。

アバター

ID非公開さん

2018/10/2923:16:23

エクセルVBAの質問です。

大量のセルコピーをする場合、どういうやり方が速いでしようか?

たとえば、シート1のA10〜A2000をシート2のA1セル以下にコピーするような形です。

よろしくお願い致します。

閲覧数:
93
回答数:
4

違反報告

ベストアンサーに選ばれた回答

yas********さん

2018/10/3011:32:01

はじめまして~

書式などが不必要なら、値複写のパターンが速いと思います。
Range("貼付先セル範囲").Value = Range("コピー元セル範囲").Value

>シート1のA10〜A2000をシート2のA1セル以下にコピー
の例では、
Sheets("Sheet2").Range("A1:A1991").Value = _
Sheets("Sheet1").Range("A10:A2000").Value

また、上記の Sheet1のA10:A2000をSheet2の1列~10000列まで張り付けたのが下記コードです。
処理時間は190秒ぐらいでした。

Sub Sample()
Dim i As Long
Dim startTime As Double
Dim endTime As Double

Application.ScreenUpdating = False
startTime = Timer
For i = 1 To 10000
Sheets("Sheet2").Range(Cells(1, i), Cells(1991, i)).Value = _
Sheets("Sheet1").Range("A10:A2000").Value
Next i
Application.ScreenUpdating = True
endTime = Timer
MsgBox endTime - startTime
End Sub

いかがですか~

ベストアンサー以外の回答

1〜3件/3件中

並び替え:回答日時の
新しい順
|古い順

you********さん

2018/11/123:19:03

シート2のA1セルからペーストであれば下記でよいかと。
Sub CopyCell()
Worksheets(1).Range("A10:A2000").Copy Worksheets(2).Range("A1")
End Sub

シート2のA2であれば末尾のA1をA2に変えてください


ブログやってます♪

http://kimama-vba.com/

hel********さん

2018/10/3008:02:27

横方向へコピーするようなイメージであれば


Sub Sample()
Dim rng As Variant, sh1 As Worksheet, sh2 As Worksheet, i As Integer
Set sh1 = Worksheets("Sheet1")
Set sh2 = Worksheets("Sheet2")
For i = 1 To sh1.Cells(10,Columns.Count).End(xlToLeft).Column
rng = sh1.Range(sh1.Cells(10, i), sh1.Cells(2000, i))
With Sheets("Sheet2")
.Range(.Cells(1, i), .Cells(2001, i)) = rng
End With
Next i
End Sub

プロフィール画像

カテゴリマスター

kxk********さん

2018/10/2923:35:08

Sheets("シート1").Range("a10:a2000").Copy Sheets("シート2").Range("a1")

ぐらいで、よろしいのではないでしょうか。

この処理を何百回も繰り返すなら別ですが。

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる