2017-10-03 2 views
0

.xls 파일을 읽을 수있는 다른 시스템으로 .csv 파일을 출력하는 시스템에서 Excel로 데이터를 변환하고 있습니다. 하나의 열은 크기로 4-6, 6-8 등의 용어가 자주 사용됩니다. Excel에서 csv를 열면 자동으로 (?) 날짜로 변환됩니다 (6 월, 8-Jun 등). .NumberFormat = "md" 을 사용하여 데이터를 가져와야합니다.하지만 당연히 날짜 값이고, 수행하려고하는 모든 작업이 다시 변환됩니다. 정확하게 텍스트 형식으로 변환 할 수있는 방법이 있습니까? .NumberFormat을 "@"로 선언하면 값이 직렬로 바뀝니다. 크기와 다른 여러 열과 함께 인벤토리 목적으로 하나의 긴 제품 ID 코드를 만듭니다. 크기가 날짜 값으로 변경되면 일부 데이터가 누락됩니다.Excel에서 숫자 형식을 날짜 형식으로 변환하지 못하게합니다.

+1

텍스트 파일로 csv 파일을 읽은 다음 "텍스트 to columns "(쉼표를 구분 기호로 사용)에서 해당 열을 텍스트로 유지하도록 지정합니다. – YowE3K

+0

다른 사람들이 실행할 수있는 "불과 잊기"프로그램을 만들고 가능한 경우 특별한 공개/가져 오기 지침을 피하려고합니다. Excel에서 이러한 버그가 쉽게 무시 될 수없는 것처럼 보입니다. 이상하게도 Excel의 Concatenate 함수는 VBA가 아니라 올바른 결과를 생성합니다. '= CONCATENATE (월 (A1), "-", 요일 (A1))' – CAW

+0

csv 파일을 텍스트 파일로 읽고 "text to columns"를 수행하는 것은 " "응용 프로그램 - 사용자가 염려하는 한, 단추가 사용하는 코드에 상관없이 단추 누르기입니다. – YowE3K

답변

0

VBA에서 완전히 실행되는이 문제에 대한 해결책을 발견했습니다. 즉, 특별한 가져 오기 조건에 의존하지 않습니다.

Dim Size as String 
For i = 2 To LastRow 
    If IsDate(Range("H" & i).Value) Then 
     Size = Month(Range("H" & i)) & "-" & Day(Range("H" & i)) 
     Range("H" & i).NumberFormat = "@" 
     Range("H" & i) = Size 
    End If 
Next i 

의 I 해요 열 테스트와 함께 문자열입니다 크기 값 (XL, SM, 12T, 등), 포함 :이 예기치 않은 오류를 만들 수있는 잠재력을 가지고 특히, 어떤 포인터 또는 추천을 부탁드립니다 날짜 (4-6, 6-8)로 변환되는 값. 이 으로 표시되어 문자열 값으로 변환 한 다음 향후 모든 사용 (연결 및 논리적 테스트)에서 문자열 값으로 올바르게 처리합니다.

관련 문제