2013-10-23 13 views
0

매크로를 실행하려고 할 때 이상한 문제가 있음을 발견했습니다. 는 "일/월/년으로"날짜 "유형에있는이 열의Excel에서 날짜를 인식하지 못합니다.

|  D  | 
|15/01/2013 | 
|20/01/2013 | 
|01/02/2013 | 

모든 세포 내 시트에서

나는이 같은 날짜로 다른 시트에서 복사 된 열이 "형식. 매크로와 내가 하나가 각각의 년에 날짜를 비교하려면

는 예를 들어, 작동합니다 내가 할 경우 :

Year(Range("D1").Value)=Year(Range("D2").Value) 그것이 진정한 문

를 반환하지만 비교하려고하면 날짜 자체는 작동하지 않습니다. 예를 들어

내가 수행하려고 할 경우 :

Range("D1").Value <= Range("D2").Value 그것이 거짓 진술을 반환합니다.

하지만 예를 들어 D2의 수식 입력 줄에 수동으로 들어가면 나는 그것을보고 난 다음 Enter 키를 누르면 내 열이 다음과 같이 보입니다.

|  D  | 
|15/01/2013 | 
| 20/01/2013| 
|01/02/2013 | 

그리고 내 칼럼의 모든 값에 대해이 작업을 수행하는 경우 다음

Range("D1").Value <= Range("D2").Value는 진정한 문을 반환합니다.

Excel에서이 작업을 수행하는 이유와 수동으로 500 행을 변경하지 않기 때문에 자동으로 내 열에 악용 가능 날짜가 포함될 수 있다고 설명 할 수 있습니까?

감사

그것은 숫자 유형 문자열 유형의 암시 적 강제 함께 할 수있어

답변

0

. Excel은 특정 날짜 유형이 없으며 숫자 형식을 사용하여 날짜를 나타냅니다.

Year 함수는 제공된 인수를 숫자 형식으로 암시 적으로 변환합니다. 따라서 외부 공간을 제거하십시오.

그러나 Range에서 작용하는 .Value 기능은 그렇게하지 않습니다.

인접한 열에서 DATEVALUE 함수를 사용하여 텍스트를 날짜로 변환하고 (로케일 특정 방식 임에도 불구하고)이를 비교하는 것을 고려하십시오.

+0

감사합니다. =) – Tom

1

500 행을 수동으로 변경할 필요가 없습니다. 텍스트 열 기능을 사용하여 문제를 해결할 수 있습니다.

Range("D1:D500").TextToColumns Destination:=Range("D1"), DataType:=xlDelimited, _ 
    TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _ 
    Semicolon:=False, Comma:=False, Space:=False, Other:=False, _ 
    FieldInfo:=Array(1, 4), TrailingMinusNumbers:=True 
관련 문제