Excel VBA質問箱 IV

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

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


3778 / 76735 ←次へ | 前へ→

【78586】Re:大容量Dataのシート間のコピーについて
発言  β  - 16/11/18(金) 19:03 -

引用なし
パスワード
   ▼VBA初心者 さん:

こちらで45000行16列、各セル 16文字 のデータを作成し以下のコードを走らせると、
こちらの環境で 3秒弱です。
なので、ステータスバーの表示をするまでもないと思います。(コードではしていません)
DoEventsも不要です。

ただ、出来上がりのブックは10メガほどになりますね。
これって、ブックそのものの扱いが重そうですね。

Sub Test()
  Dim t As Double
  Dim ws1 As Worksheet
  Dim ws2 As Worksheet
  Dim fV As Variant
  Dim tV() As String
  Dim i As Long
  Dim y As Long
  Dim x As Long
  Dim j As Long
  Dim z As Long
  Dim flg As Boolean
  
  t = Timer
  
  Set ws1 = Sheets("Sheet1")
  Set ws2 = Sheets("Sheet2")
  
  fV = ws1.Range("A1", ws1.Range("A" & Rows.Count).End(xlUp)).Resize(, 16).Value
  ReDim tV(1 To UBound(fV, 1), 1 To 16 * 3)
  
  For i = 1 To UBound(fV, 1) Step 3
    x = 0
    z = z + 1
    For y = i To i + 2
      If y > UBound(fV, 1) Then
        flg = True
        Exit For
      Else
        For j = 1 To UBound(fV, 2)
          x = x + 1
          tV(z, x) = fV(y, j)
        Next
      End If
    Next
    If flg Then Exit For
  Next
        
  ws2.Range("A1").Resize(z, UBound(tV, 2)).Value = tV
  
  MsgBox Timer - t
  
End Sub

12 hits

【78581】大容量Dataのシート間のコピーについて VBA初心者 16/11/18(金) 10:42 質問[未読]
【78585】Re:大容量Dataのシート間のコピーについて 亀マスター 16/11/18(金) 17:14 回答[未読]
【78586】Re:大容量Dataのシート間のコピーについて β 16/11/18(金) 19:03 発言[未読]

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