VBA에서 과학적 표기법없이 Excel 셀에서 텍스트 파일로 숫자 값 쓰기


2

Excel에서 VBA 모듈에 문제가 있습니다. 스프레드 시트의 셀을 참조하고 쉼표로 구분 된 값을 텍스트 파일에 쓰는 스크립트가 있습니다.

내가하는 방식은 다음과 같습니다.

Dim line_data(0 to 1) As String
line_data(0) = SheetNameVar.Cells(7, "C").Value
line_data(1) = SheetNameVar.Cells(8, "C").Value

Dim line As String
line = Join(line_data, ",")

TextStreamNameVar.WriteLine line

모든 것이 예상대로 작동하지만 소수점 뒤에 0이 있으면 과학 표기법으로 텍스트 파일에 값을 계속 기록합니다. 예를 들어

3.77265350125136E-03,0.169769407556311

시트는 소수점 다음에 6 자리로 소수점으로 표시되지만 시트 쓰기에는 영향을 미치지 않습니다.

텍스트 스트림에 쓸 때 값 표기법을 변환하는 Excel VBA에 대한 정보를 찾지 못하는 것 같습니다. 이것을 막을 방법이 있습니까? 이상적으로는 시트 형식에 의존하지 않으므로 가독성을 위해 정밀도를 떨어 뜨릴 수 있습니다. 그러나 텍스트 파일에 다음과 같이 표시되는 값이 필요합니다.

.00377265350125136,0.169769407556311

도움을 주셔서 감사합니다.


1
시도Format(SheetNameVar.Cells(7, "C").Value,"General")
Máté Juhász

그 결과 텍스트 파일에 "Ge5eral"이 기록되었습니다. "일반 번호"로 전환했지만 다시 과학적 표기법을 제공합니다.
토마스 커크 패트릭

답변:


0

Excel 시트 자체의 형식을 변경해도 데이터 만 가져 와서 변수에 넣기 때문에 여기에 영향을 미치지 않습니다.

다음과 같이 사용자 정의 형식 문자열을 사용하여 과학적 표기법없이 값을 표시 할 수 있습니다.

line_data(0) = Format(Sheets(1).Cells(7, "C").Value, "0.##############################")
line_data(1) = Format(Sheets(1).Cells(8, "C").Value, "0.##############################")

#문자를 표시 할 수있는 개수 이상이 필요 합니다. 이와 같이 포맷하면 더 짧은 숫자가 실제 길이로 표시 될 수 있지만 #, 숫자보다 적은 수를 입력하면 나머지 자리가 잘립니다. 모든 숫자를 같은 길이 로 맞추려면 0대신 사용할 수 있으며 #짧은 숫자는 0으로 채워집니다. 마찬가지로 소수점 이하 자릿수 0을 원하지 않으면 1을 a로 변경하십시오 #.


이것이 유일한 해결책 인 것 같습니다. 각 줄의 서식을 지정하는 대신 단일 설정을 변경하고 싶었습니다. 나는 줄이 많다. 형식화 된 값을 반환하는 함수를 작성할 수 있다고 가정합니다.
Thomas Kirkpatrick

내가 선택한 라인에서 수행 할 필요는 없습니다. 그것은 당신이 보여준 코드를 기반으로했습니다. 숫자를 보유한 모든 변수에이를 수행 할 수 있으므로 배열을 루프에 넣고 한 번에 모든 숫자에 서식을 적용하는 것이 실제로 쉽습니다.
techturtle

배열에는 필요한 데이터 형식이 혼합되어 있습니다. 전체 스크립트에는 이런 식으로 포맷해야 할 줄이 ~ 50 줄이 있지만 많은 배열에 걸쳐 있습니다.
토마스 커크 패트릭
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.