0

私のセットアップ: 50,000 行のデータがあります。(行数は将来的に増加する予定です。したがって、64000 行以上の完全なワークシートがあると言えます。) すべてのデータはテキストであり、数式などはありません。

列 A は開いています 列 B から AC には、連結する必要があるデータが含まれています 列 A に連結された行のデータには、60,000 桁またはファイルサイズで 6kb が含まれます。追加の操作の後、各セルはファイルになります。

Excel で連結を試みましたが、メモリの問題が発生しました。メモリの問題は、連結関数を選択してワークシートに入力するときです。8200 +/- 行でクラッシュします。私のシステムは 2 GB の RAM、Windows XP Professional および Excel 2003 です。4 GB のディスク容量があります。

メモリを節約し、Excel のようにクラッシュしない VBA コードを見つけたいと思っています。

ありがとうございました

4

1 に答える 1

0

これは Excel では珍しい使用法ですが、各連結操作を想定すると、メモリが不足する前にメモリを解放するだけです。

それほどエレガントではありませんが、2000 行をコピーして列 A の上に値として貼り付けることができます。必要に応じて、A2:AC2002 (不要な使用済みデータ) も削除します。自動計算をオフにすることも役立つ場合があります。

マクロレコーダーからのマクロを使用すると、これを行う[相対的に配置された]マクロを簡単に記録できます。作成した式を選択することから始めます。

非常に粗雑なコード:

Sub Macro5()

With Application
  .EnableEvents = False
  .ScreenUpdating = False
End With

Dim i As Long

For i = 0 To 32
    Selection.Copy
    ActiveCell.Offset(1, 0).Range("A1:A2000").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    ActiveCell.Offset(-1, 0).Range("A1:A2000").Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
    Application.CutCopyMode = False
    ActiveCell.Offset(2000, 0).Range("A1").Select
Next i

With Application
  .EnableEvents = True
  .ScreenUpdating = True
End With
End Sub
于 2009-12-06T23:46:07.807 に答える