programing

VBA에서 과학적 표기법으로 변환하지 않고 CSV에서 Excel로 긴 숫자를 가져오는 방법

muds 2023. 4. 11. 22:42
반응형

VBA에서 과학적 표기법으로 변환하지 않고 CSV에서 Excel로 긴 숫자를 가져오는 방법

아래의 코드와 함께 세미콜론으로 구분된 txt 파일을 열었는데, 그 컬럼의 포맷에 관계없이 Excel로 저장 후 과학적인 표기법으로 긴 계정 번호가 표시되었습니다.

내가 여기서 뭘 잘못했나요?

    Application.ScreenUpdating = False
    Workbooks.OpenText fileName:=Filetxt, Origin:=xlWindows, StartRow _
    :=2, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
    ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=True, Comma:=False, _
    Space:=False, Other:=False, Local:=True, _
    FieldInfo:=Array(Array(1, 4), Array(2, xlTextFormat)
    'Save text file as csv file
    Set wb = ActiveWorkbook
    Application.DisplayAlerts = False
    wb.SaveAs fileName:=fileXls, FileFormat:=6, _
    ReadOnlyRecommended:=False, _
    CreateBackup:=False
    Application.DisplayAlerts = True
    wb.Close savechanges:=True

txt 파일의 레코드는 다음과 같습니다.2011-12-21;100,00;"21375000120000010020601764"

그리고 새로 저장된 파일을 열면 해당 숫자 대신 2.117500012E+25가 표시됩니다.여기 무슨 일 있어?

제품을 Excel 파일로 Import하고 있었는데 바코드가 과학적 표기법(예: 5.4265E+12)으로 표시됩니다.

즉, 파일을 csv 파일로 변환하여 자세한 내용을 업로드 했을 때 csv가 바코드를 제대로 읽지 못하고 52862300000 등으로 변경되어 있었습니다.

대처 방법:

  • Excel 시트로 열기(또는 하나로 열 수 없는 경우 변환)
  • (표준/과학적 표기법) 열을 강조 표시합니다.
  • 데이터/텍스트에서 열로 이동
  • 페이지 1: [Delimited]체크 / [Next
  • 페이지 2: '탭' 체크 후 '텍스트 한정자'를 ' / Next'로 변경합니다.
  • 페이지 3: '일반'이 아닌 '텍스트'를 선택하십시오.
  • 끝내라.

그러면 모두 긴 숫자로 표시되도록 변환됩니다.그런 다음 CSV 파일로 저장할 수 있으며 숫자는 과학적 숫자로 변환/포맷되지 않습니다.

이게 도움이 됐으면 좋겠어!!

Excel에서 직접 파일을 여는 대신 다음을 사용하여 Import합니다.

Data --> From Text/CSV

마법사를 사용하여 열 유형을 텍스트로 지정합니다.

[ Detection ][Data Type Detection]를 합니다.Do not detect data types

Excel의 숫자는 15자리로 제한됩니다.예제 번호가 너무 커서 Excel이 정확하게 나타낼 수 없습니다. 따라서 과학적 표기법으로 변환된 것이 설명될 수 있습니다.

이 컬럼을 번호가 아닌 텍스트로 Excel로 Import해야 합니다.그러면 정밀도가 저하되지 않습니다.

편집: 매크로를 기록할 때 "텍스트에서 열기" 프로세스를 밟으면 다음과 같은 메시지가 나타납니다.

Workbooks.OpenText Filename:= Filetxt, Origin:=xlWindows, _
        StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
        ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=True, Comma:=False _
        , Space:=False, Other:=False, FieldInfo:=Array(Array(1, 5), Array(2, 1), _
        Array(3, 2)), TrailingMinusNumbers:=True

이 프로세스에는 각 열에 있는 데이터 유형을 선택할 수 있는 단계가 있습니다.

사용하시는 "FieldInfo" 파라미터가 조금 이상하다고 생각합니다.컬럼이 3개 있어야 하는데 col2를 텍스트로 태그했습니다.

번호 앞에 아포스트로피를 삽입합니다.이렇게 하면 Excel에 전체 번호가 강제로 표시됩니다.

내 시스템은 mac os X El Capitan인데, html 테이블에서 Excel로 데이터를 복사할 때 "cells format"을 텍스트로 변경할 때 번호가 항상 1.10101E+17 등으로 자동 변환됩니다.

저의 결심은:

  1. Mac OS 소프트웨어 "Numbers"를 열고 새 탭을 만듭니다.
  2. 데이터를 탭에 복사하면 올바른 번호가 표시됩니다.
  3. Microsoft Excel 숫자 열 "셀 형식"을 텍스트로 변경 열기
  4. 숫자 탭에서 데이터 복사
  5. "선택사항 붙여넣기"를 마우스 오른쪽 버튼으로 누른 후 [텍스트]를 선택합니다.

왜 그랬는지 모르겠지만 난 효과가 있어.

텍스트 파일 탭이 구분된 상태에서 사용할 수 있는 솔루션이 있습니다.

메모장 등에서 텍스트 파일을 엽니다.

Ctrl+A 및 Ctrl+C를 누른 다음 Ctrl+V를 눌러 텍스트 파일을 빈 시트에 복사합니다.

과학적으로 보이는 모든 열을 적어 둡니다.

다음으로 Ctrl+Z(undo).이제 빈 워크시트가 표시됩니다.

이전에 메모한 모든 열을 강조 표시합니다(각 열 머리글을 Ctrl-클릭).

형식을 텍스트로 변경

첫 번째 셀을 클릭하고 Ctrl+V를 다시 클릭합니다.

텍스트 파일을 입력으로 사용하고 있는 것 같습니다.순서:

  1. A1 셀로 이동
  2. 파일 -> 열기 -> .txt 파일 선택 -> 열기
  3. 텍스트 가져오기 마법사가 열립니다.입력 파일 형식에 따라 1단계와 2단계를 수행합니다.3단계에서는 다음 절차를 수행합니다.
  4. 마우스를 사용하여 골칫거리인 긴 계정 번호를 나타내는 열을 선택합니다.'컬럼 데이터 형식'에서 '텍스트' 라디오 버튼을 선택한 다음 마침을 클릭합니다.

당신은 가도 좋습니다.

Foramt를 변경할 셀을 선택합니다.

'Example:
Columns("A:E").Select
Selection.NumberFormat = "0.00" 
Selection.NumberFormat = "0.0"
Selection.NumberFormat = "0"

'The exponential or scientific notation will be converted 

언급URL : https://stackoverflow.com/questions/13732077/how-to-import-long-number-from-csv-to-excel-without-converting-to-scientific-not

반응형