2013-05-24 1 views
1

VBA를 사용하여 CSV 파일을 가져 와서 여러 열에 데이터 묶음을 넣습니다.Excel에서 일부 열의 형식 만 변경되는 것 같습니다.

이 열 중 하나에 날짜와 시간이 있습니다. 나는이 세포의 단지 '시간'부분을 사용 할 수 있어야합니다, 나는

Cells(x.y).EntireColumn.NumberFormat = "hh:mm:ss" 
or 
Range("C1").NumberFormat = "hh:mm:ss"  
Range("C1").EntireColumn.NumberFormat = "hh:mm:ss" 

그러나,이 변환하지 않습니다 사용 (그리고 거의 모든 다른 변화)에 의해 시간에 전체 열을 변환하려고 전체 열. 나는 전체 열을 선택하고 VB를 통해 변경할 수있는 가능한 모든 다른 방법을 시도했지만 여전히 일부만 변환 된 상태로 유지됩니다.

변환되지 않은 셀을 이중 클릭하고 Enter 키를 누르면 올바른 형식으로 변경됩니다. 이 문제는 계산과 관련된 일반적인 문제임을 알고 있지만 통합 문서를 자동 계산으로 설정하고 VB에서이 작업을 시도해 보았습니다. 이것은 아무 것도 변경하지 않습니다.

내가 찾을 수있는 유일한 패턴은 일이 두 자릿수에 도달하면 셀이 변환되지 않는다는 것입니다. 예를 들어

Column C

01/05/2013 7:28:56 
03/05/2013 13:24:53 
07/05/2013 20:13:24 
09/05/2013 8:29:22 
12/05/2013 9:28:56 
15/05/2013 21:14:25 
17/05/2013 7:28:56 

가된다 :

Column C 공식 바까지의 각 셀에 대한 상위

7:28:56 
13:24:53 
20:13:24 
8:29:22 
12/05/2013 9:28:56 
15/05/2013 21:14:25 
17/05/2013 7:28:56 

는 여전히 모든 날짜를 보여주고 모든 세포의 시간, 이것이 관련이 있는지는 확실하지 않지만 d 시간을 사용하여 수행해야하는 계산의 측면에서 중요하지 않습니다.

본질적으로 C 열에있는 셀의 시간과 다른 셀의 시간 (날짜/시간 형식에도 있음)을 확인하고 그 차이를 확인해야합니다. 몇 가지 연구 끝에 가장 좋은 방법은 모든 셀을 시간 형식으로 변환 한 다음 계산을 수행하는 것이라고 결정했습니다.

또는 텍스트로 열을 변환하고 (구분 기호로 공백을 사용하는) 분할 함수를 사용하여 시간을 가져 와서 시도해 볼 수도 있지만 전체 열을 한 번 다시 변환하려고 시도 할 때도이 작업을 수행하는 데 문제가 있습니다. ~에 대한 텍스트는 날짜의 두 자릿수에서 멈 춥니 다.

모든 것을 통해 읽어 주셔서 감사합니다. 모든 의견과 도움을 주시면 감사하겠습니다.

편집 : 내 구문의 일부가 내 게시물에 정확 실현이 내 매크로

다른 편집 안에 그러나 정확했다 :이 확실히 날짜 형식 함께 할 수있는 뭔가가 생각 ... 난 그냥 것을 깨달았다 내가 그들을 포맷하기 전에 날짜가 m/dd/yyyy이고 실제로 두 자리 날짜가되면 dd/mm/yyyy으로 바뀌고 문제가 발생하면 ...

혼란을 방지하기 위해
+0

는 한 자리 일을 가진 셀의 수식 입력 줄에서 인정 된'DD/MM/yyyy' 형식인가? Excel이 'MM/dd/yyyy'와 같은 것으로 생각하는 것 같습니다. 지역 설정을 확인하십시오. 날짜를 먼저 조정해야 할 수도 있습니다. –

+0

당신이 옳을 수도, 변환 된 셀에서 수식 바에 일/월을 뒤집어 놓았다는 사실을 잊어 버렸습니다. – user2408171

+0

흠 내 윈도우 지역 설정을 확인했습니다 - 거기에는 모두 괜찮아 보입니다. 짧은 형식은 dd/mm/yyyy로 설정됩니다. – user2408171

답변

1

, 날짜가 항상 동일한 폭을 차지할 것으로 보인다, 나는이

1 추천) 텍스트로이 열을 가져

2) 다음 전체 열

가서

For Each C In Range("A:A").Cells 
    If C <> "" Then 
     ' .... 
    End If 
Next C 

3) 선두 11 자리를 잘라냅니다. 예 : C = Mid(C, 11, 99)

4) 시간에 남아있는 문자열을 변환, 예를 들어

는 다른 방법도 날짜 부분을 캡처하여 모양으로 그것을 가지고 할 수 있습니다 C = CDate(C) (시간이 날짜의 소수 부분이기 때문에 는 ... 네, 그것은뿐만 아니라 시간 작동). 워크 시트 수식을 사용하는 몇 가지 아이디어는 here을 참조하십시오.

+0

감사합니다! 그렇습니다.이 셀을 문자열로 가져 오는 것은 확실히 도움이되었습니다. 상황은 이제 괜찮아 보인다. 시간 내 줘서 고마워! – user2408171

관련 문제