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 등으로 자동 변환됩니다.
저의 결심은:
- Mac OS 소프트웨어 "Numbers"를 열고 새 탭을 만듭니다.
- 데이터를 탭에 복사하면 올바른 번호가 표시됩니다.
- Microsoft Excel 숫자 열 "셀 형식"을 텍스트로 변경 열기
- 숫자 탭에서 데이터 복사
- "선택사항 붙여넣기"를 마우스 오른쪽 버튼으로 누른 후 [텍스트]를 선택합니다.
왜 그랬는지 모르겠지만 난 효과가 있어.
텍스트 파일 탭이 구분된 상태에서 사용할 수 있는 솔루션이 있습니다.
메모장 등에서 텍스트 파일을 엽니다.
Ctrl+A 및 Ctrl+C를 누른 다음 Ctrl+V를 눌러 텍스트 파일을 빈 시트에 복사합니다.
과학적으로 보이는 모든 열을 적어 둡니다.
다음으로 Ctrl+Z(undo).이제 빈 워크시트가 표시됩니다.
이전에 메모한 모든 열을 강조 표시합니다(각 열 머리글을 Ctrl-클릭).
형식을 텍스트로 변경
첫 번째 셀을 클릭하고 Ctrl+V를 다시 클릭합니다.
텍스트 파일을 입력으로 사용하고 있는 것 같습니다.순서:
- A1 셀로 이동
- 파일 -> 열기 -> .txt 파일 선택 -> 열기
- 텍스트 가져오기 마법사가 열립니다.입력 파일 형식에 따라 1단계와 2단계를 수행합니다.3단계에서는 다음 절차를 수행합니다.
- 마우스를 사용하여 골칫거리인 긴 계정 번호를 나타내는 열을 선택합니다.'컬럼 데이터 형식'에서 '텍스트' 라디오 버튼을 선택한 다음 마침을 클릭합니다.
당신은 가도 좋습니다.
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
'programing' 카테고리의 다른 글
Excel을 사용한 CSV 파일의 따옴표 및 구분자 이스케이프 (0) | 2023.04.11 |
---|---|
오류 0xc02049: 데이터 흐름 태스크 1: 읽기 전용 열에 삽입할 수 없음 (0) | 2023.04.11 |
'언클리어드 셀렉터' 경고를 제거하는 방법 (0) | 2023.04.11 |
WPF의 MVVM 프로젝트 구조 (0) | 2023.04.11 |
VBA에서 다음 줄의 코드를 계속하는 방법 (0) | 2023.04.11 |