2010-04-01 3 views
0

2200+ 페이지 텍스트 파일이 있습니다. 별표가있는 데이터 교환을 통해 고객으로부터 전달되어 행의 끝을 나타내는 값과 물결표 (~)를 구분합니다. 파일이 Word에서 텍스트 파일로 전송됩니다. 대부분의 행은 두 개로 나뉩니다 (1 행은 전체 행과 두 번째 행의 일부를가집니다). 불행히도 행 끝에서 발생하는 0은 "text to columns"프로 시저에서 폐기되는 Excel로 세그먼트 (10 페이지 청크)를 한 번에 전송합니다. 그래서, 나는 모든 "긴"행에 눈을 돌려 제로가 손실되지 않았는지 확인하고 수동으로 다시 입력하십시오.VBA를 사용하면 행 범위에서 다른 셀을 모두 선택 (세로로 복사 및 붙여 넣기) 할 수 있습니까?

SDQ EA 92 1551 378 1601 151 1603 157 1604 83 

"SDQ, EA, 92"부적절 (데이터 송신의 생성물)이다 :

다음 샘플 데이터의 작은 비트이다. Excel 및/또는 VBA를 사용하여 1551, 1601, 1603 및 1604 (상점 번호)를 선택하여 해당 값을 복사하고 수직으로 붙여 넣기 할 수 있습니다. 그런 다음 상점 번호 옆에 붙여 넣을 수 있도록 378, 151, 157 및 83 (판매 값)을 복사하여 복사합니다. 다음 두 행의 데이터에는 동일한 상점 x 호가 들어 있지만 해당 달러 값을 제공합니다. 단위 값 (예 : 378, 151, 157 및 83) 옆에 가로로 붙여 넣기 할 수 있도록 달러 값만 복사하면됩니다.

행의 관심있는 첫 번째 셀에 커서를 놓고 다른 모든 셀을 복사하는 매크로를 실행하면 작업 속도가 엄청나게 빨라집니다. ActiveCellOffset 참조를 사용하여 복사 할 범위를 선택했지만 시도하지 못했습니다. 어떤 제안이 나에게 있습니까? 도움에 미리 감사드립니다.

+5

몇 줄의 _exact_ 형식을 사용할 수 있습니까? 예를 들어 * 및 ~을 언급했지만 샘플에 표시하지는 않습니다. 질문을 편집하여 끝에 추가 할 수 있습니다. –

+2

@Joe Internet이 말한 바에 따르면 질문을 논리적 인 단락으로 나누어 이해할 수 있을까요? – Lunatik

+0

나는 개인적으로 여기에 머무르게 할 것이지만 이것은 Stack Overflow에 있어야한다는 것을 확신한다. – Breakthrough

답변

0

파일에 대한 자세한 정보가 없으면 완전한 대답을하기가 어렵습니다.

입력 데이터가 2200+ 페이지 길이라면 기본 열기 기능을 사용하여 여는 것이 길 일 것 같지 않습니다. 특히 Excel에는 행과 열의 최대 개수가 있기 때문에 특히 그렇습니다. 파일이 텍스트 파일 (.txt) 인 경우 VBA로 열고 한 번에 하나씩 각 행을 읽고 데이터를 처리하는 것이 좋습니다.

다음은 시작하기위한 예입니다. 이것은 텍스트의 각 행을 데이터 열로 바꾸는 것이므로 2200 페이지의 텍스트를 실행하기 오래 전에 Excel의 모든 열을 빠르게 채울 것입니다. 그러나 그것은 단지 예일뿐입니다.

Sub getData() 
    dFile = FreeFile 
    sFile = "c:\code\test.txt" 

    Open sFile For Input As #dFile 
    c = 1 
    'keep doing this until end of file 
    Do While Not EOF(dFile) 
     'read line into dataLine 
     Input #dFile, dataLine 
     ' break up line into words based on spaces 
     j = Split(dataLine, " ") 
     jLength = UBound(j) 
     If jLength > 2 Then 
     r = 1 
     'ignore first 3 words 
     'and get every other word 
     'transpose rows of text into columns 
     For word = 3 To jLength Step 2 
      Cells(r, c) = j(word) 
      r = r + 1 
     Next word 
     End If 
     c = c + 1 
    Loop 
    Close #Data 
End Sub 
관련 문제