Excel VBA質問箱 IV

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

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


39613 / 76732 ←次へ | 前へ→

【42229】Re:処理時間の短縮
発言  かみちゃん  - 06/9/4(月) 17:00 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>今現在、sheets(1)の1行取得しsheets(2)の1行も取得
>比較し「E列」が値が異なる場合のみ
>sheets(3)にコピーする様にしたいのですが
>今現在のコードだと30分以上かかってしまいあまりにも効率が悪い為
>同じ条件で処理時間の短縮を図るにはどのようにしたらいいでしょうか?

Sheet1およびSheet2が同じ行数であること、
A列〜D列の内容の確認は行なわないこと
である前提ですと、以下のコードでいかがでしょうか?
提示されたデータによる動作確認はしましたが、1500行の負荷試験はしていませ
んので、結果うまくいけば、どれくらい短縮になったか教えてください。

Sub Macro1()
 Dim vntData1 As Variant
 Dim vntData2 As Variant
 Dim lngMaxRow As Long
 Dim lngRow As Long
 Dim lngResultRow As Long
 
 vntData1 = Sheets("Sheet1").Range("A1").CurrentRegion.Value
 vntData2 = Sheets("Sheet2").Range("A1").CurrentRegion.Value
 lngMaxRow = UBound(vntData1, 1)
 For lngRow = 1 To lngMaxRow
  If vntData1(lngRow, 5) <> vntData2(lngRow, 5) Then
   lngResultRow = lngResultRow + 1
   Sheets("Sheet3").Cells(lngResultRow, 1).Resize(, 5).Value = _
    Array(vntData2(lngRow, 1), vntData2(lngRow, 2), vntData2(lngRow, 3), vntData2(lngRow, 4), vntData2(lngRow, 5))
  End If
 Next
 MsgBox "Fin!!"
End Sub

0 hits

【42228】処理時間の短縮 06/9/4(月) 16:26 質問
【42229】Re:処理時間の短縮 かみちゃん 06/9/4(月) 17:00 発言
【42287】Re:処理時間の短縮 06/9/5(火) 16:45 お礼
【42235】Re:処理時間の短縮 ハチ 06/9/4(月) 19:14 回答
【42261】Re:処理時間の短縮 06/9/5(火) 10:27 お礼
【42291】Re:処理時間の短縮 ハチ 06/9/5(火) 17:18 発言
【42307】Re:処理時間の短縮 06/9/6(水) 10:16 お礼
【42236】Re:処理時間の短縮 Hirofumi 06/9/4(月) 19:42 回答
【42238】Re:処理時間の短縮 飛ばない豚 06/9/4(月) 20:08 回答
【42256】Re:処理時間の短縮 飛ばない豚 06/9/5(火) 9:22 回答
【42259】Re:処理時間の短縮 Kein 06/9/5(火) 10:11 回答
【42308】Re:処理時間の短縮(解決) 06/9/6(水) 10:24 お礼

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