2012-04-26 4 views
0

C#에서 자동으로 생성 된 대형 Excel 시트가 있으며 모든 열이 텍스트로 출력됩니다 (기술적 인 이유로 변경할 수 없음). 숫자 열을 숫자로 변환하는 매크로를 작성하는 데 어려움이 있습니다 (시트에 80 열과 20,000 행이 포함됨).대용량 파일의 텍스트 열을 숫자로 변환

나는 모든 세포를 통해 반복하고 이것은 매우 느립니다 내가 문자열은 "0xxx"사물로 시작하는 특별한 경우가 추가적인 문제가

If IsNumeric(cell.Value) Then cell.Value = CDec(cell.Value) 

를 호출 시도로 유지해야 문자열. IsNumeric을 사용한 다음 CDec으로 변환하면 맨 앞의 0이 손실됩니다!

열의 한 값이 문자열인지 감지 한 다음 열을 처리하지 말고 그렇지 않으면 앞에 0이있는 경우를 제외하고 숫자를 변환하지 마십시오.

답변

0

값을 메모리에 저장하고 확인 작업을 수행합니까? 아래의 코드와 비슷한 것이지만,이를 수정하고 condition_is_true을 의미있는 것으로 대체해야합니다. 부울을 반환하는 함수를 사용합니다.

Dim input_var As String 

For r = 1 To 20000 
    For c = 1 To 80 
     input_var = Sheet1.Cells(r, c).value 
     'do some stuff to the string 

     If condition_is_true Then 
      Sheet1.Cells(r, c).value = CDec(input_var) 
     Else 
      Sheet1.Cells(r, c).value = input_var 
     End If 
    Next c 
Next r 
관련 문제