2009-12-06 9 views
0

내 설정 : 데이터 행이 50,000 개 있습니다. (내 행 수는 향후 증가 할 것이다. 그래서뿐만 아니라 나는 64000+ 행의 전체 워크 시트를 말할 수 있습니다.) 모든 데이터는 텍스트, 아니 공식이다 등메모리 문제 해결 방법을 방지하기 위해 VBA 코드를 연결해야합니다.

열 A가 열려 열 B AC 통해 연결해야하는 데이터 포함 한 번 연결된 열의 데이터에는 60,000 자리 또는 6KB의 파일 크기가 포함됩니다. 추가적인 maniuplation 후에는 각 셀이 파일이됩니다.

Excel에서 연결을 시도했는데 메모리 문제가 발생했습니다. 메모리 문제는 연결 함수를 선택하여 워크 시트에 채울 때 발생합니다. 8200 +/- 행에서 충돌합니다. 내 시스템은 RAM, Windows XP 전문가 및 Excel 2003의 2GB입니다. 4GB의 디스크 공간이 있어야합니다.

메모리를 절약하고 Excel 에서처럼 작동하지 않을 VBA 코드를 찾으려고합니다. 이것은 당신이 밖으로 실행하기 전에 각 병합 작업이 메모리까지 바로 무료 일부 메모리를 소요 가정, 엑셀에 대한 비정상적인 사용하지만

당신에게

+1

지구에 Excel에서이 작업을 수행하는 이유는 데이터의 소스는 무엇입니까?! –

+2

Excel은 많은 사람들에 의해 악용되고 있습니다. 이것이 세상의 길입니다. – ChaosPandion

+0

왜 연결을 다시 셀에 씁니까? 이것을 메모리에있는 문자열로 유지하고 문자열에 대한 조작을 수행하고 결과를 파일에 출력합니다. – barrowc

답변

0

감사드립니다.

우아한 것은 아니지만 2000 행을 수행 할 수 있지만 C 열 자체를 값으로 복사하여 붙여 넣습니다. 선택 사항으로 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