
2004년 3월 21일은 날짜로 등록되지 않지만 2004년 7월 3일은 날짜로 등록됩니다. 월 값이 0부터 시작하는 날짜 값에서 0을 모두 제거하는 방법을 아는 사람이 있습니까?
따라서 왼쪽 여백에 붙어 있는 열은 자동 변환되지 않습니다. 오른쪽에 붙어 있는 기둥은 괜찮습니다.
답변1
일반적으로 이 문제는 DATEVALUE 함수를 사용하여 텍스트인 날짜를 Excel 날짜 값(즉, Excel에서 날짜로 인식하는 숫자)으로 변환하면 해결될 수 있습니다. 사용법은 DATEVALUE(date_string 또는 cell_address)입니다.
그러나 1) 예제 문자열에서 Day가 Month보다 앞에 있고 DATEVALUE에서는 Month 다음에 Day가 올 것으로 예상하고 2) 일부 날짜 문자열의 경우 시간도 포함되기 때문에 여기서는 작동하지 않습니다.
다음은 제공한 예제와 함께 작동하는 배열 수식 대안입니다. Control- Shift- 키 조합을 사용하여 입력해야 합니다 Enter.
=DATE(
RIGHT(IFERROR(LEFT(F8,IFERROR(SEARCH(" ",F8),0)-1),F8),MATCH("/",MID(IFERROR(LEFT(F8,IFERROR(SEARCH(" ",F8),0)-1),F8),LEN(IFERROR(LEFT(F8,IFERROR(SEARCH(" ",F8),0)-1),F8))-ROW(1:25),1),0)),
LEFT(IFERROR(LEFT(F8,IFERROR(SEARCH(" ",F8),0)-1),F8),SEARCH("/",IFERROR(LEFT(F8,IFERROR(SEARCH(" ",F8),0)-1),F8))-1),
LEN(IFERROR(LEFT(F8,IFERROR(SEARCH(" ",F8),0)-1),F8))-MATCH("/",MID(IFERROR(LEFT(F8,IFERROR(SEARCH(" ",F8),0)-1),F8),LEN(IFERROR(LEFT(F8,IFERROR(SEARCH(" ",F8),0)-1),F8))-ROW(1:25),1),0)-LEN(LEFT(IFERROR(LEFT(F8,IFERROR(SEARCH(" ",F8),0)-1),F8),SEARCH("/",IFERROR(LEFT(F8,IFERROR(SEARCH(" ",F8),0)-1),F8))+1)))
)
이 매우 복잡한 배열 수식(누군가 더 간단한 것을 제공할 수 있기를 바랍니다)은 DATE 함수를 사용하여 Excel 날짜 값을 구성합니다. (날짜를 만들 때 F8 셀에 원래 날짜 문자열이 있었습니다.)
변환해야 하는 날짜 문자열에는 시간이 포함되는 경우가 있기 때문에 원시 형식으로 사용할 수 없습니다. 대신에 사용되는 것은 입니다 RIGHT(IFERROR(LEFT(F8,IFERROR(SEARCH(" ",F8),0)-1),F8)
. 이 수식은 날짜 문자열에서 공백을 검색합니다. 공백을 찾으면 LEFT 함수를 사용하여 공백 왼쪽에 있는 모든 문자를 가져옵니다. 공백을 찾지 못하면 단순히 원래 문자열을 반환합니다.
수식의 가장 바깥쪽 부분은 DATE 함수입니다. 연도, 월, 일이 주어지면 Excel 날짜가 생성됩니다. 위의 코드에서 이 세 가지 부분의 계산을 세분화했습니다.
연도 계산은 다음과 같습니다.
- 날짜 문자열을 반대로 바꿉니다(위에 설명된 대로 시간이 잘립니다).
- SEARCH 함수를 사용하여 이 역전된 문자열에서 첫 번째 "/" 위치를 찾습니다. (이 슬래시는 실제로 역전되지 않은 날짜 문자열의 첫 번째 슬래시입니다.)
- RIGHT 함수를 사용하여 날짜 문자열 오른쪽에서 그만큼의 문자를 가져옵니다.
월 계산에는 다음 단계가 있습니다.
- 첫 번째 슬래시의 위치를 찾으십시오.반전되지 않은날짜 문자열.
- 이 위치와 연도 계산에서 결정된 두 번째 "/" 위치 간의 차이를 계산하여 해당 월의 문자 수(1 또는 2일 수 있음)를 결정합니다.
- MID 함수를 사용하여 첫 번째 슬래시와 두 번째 슬래시 사이의 문자를 반환합니다.
일 계산이 가장 간단합니다.
- 월 계산과 동일한 방법으로 첫 번째 "/" 위치를 계산합니다.
- LEFT 함수를 사용하여 문자열의 왼쪽에서 해당 문자(빼기 1)를 가져옵니다.
결과를 얻는 덜 정교한 방법이 있는데, 그 중 가장 간단한 방법은 @Barry가 제안한 대로 리본의 데이터 탭에 있는 텍스트를 열로 명령을 사용하는 것입니다.
진행하는 또 다른 방법은 REGEX 패턴 일치 기능을 사용하는 것입니다. 이 함수는 Excel에 내장되어 있지 않지만 VBA 코드로 구성하고 액세스할 수 있습니다. 코드가 약간 까다롭기는 하지만 인터넷에서 여러 버전을 사용할 수 있습니다(예:이 예). 그러나 이 기능을 사용하는 것은 매우 간단합니다. 예를 들어 일을 가져오기 위한 일치 표현식은 다음과 같을 수 있으며 REGEXP("./",F8)
, 이는 Excel 날짜 값을 가져오기 위해 DATE 함수에서 사용될 수 있습니다.
편의상 완전한 형태의 수식은 다음과 같습니다.
=DATE(RIGHT(IFERROR(LEFT(F8,IFERROR(SEARCH(" ",F8),0)-1),F8),MATCH("/",MID(IFERROR(LEFT(F8,IFERROR(SEARCH(" ",F8),0)-1),F8),LEN(IFERROR(LEFT(F8,IFERROR(SEARCH(" ",F8),0)-1),F8))-ROW(1:25),1),0)),LEFT(IFERROR(LEFT(F8,IFERROR(SEARCH(" ",F8),0)-1),F8),SEARCH("/",IFERROR(LEFT(F8,IFERROR(SEARCH(" ",F8),0)-1),F8))-1),MID(IFERROR(LEFT(F8,IFERROR(SEARCH(" ",F8),0)-1),F8),LEN(LEFT(IFERROR(LEFT(F8,IFERROR(SEARCH(" ",F8),0)-1),F8),SEARCH("/",IFERROR(LEFT(F8,IFERROR(SEARCH(" ",F8),0)-1),F8))+1)),LEN(IFERROR(LEFT(F8,IFERROR(SEARCH(" ",F8),0)-1),F8))-MATCH("/",MID(IFERROR(LEFT(F8,IFERROR(SEARCH(" ",F8),0)-1),F8),LEN(IFERROR(LEFT(F8,IFERROR(SEARCH(" ",F8),0)-1),F8))-ROW(1:25),1),0)-LEN(LEFT(IFERROR(LEFT(F8,IFERROR(SEARCH(" ",F8),0)-1),F8),SEARCH("/",IFERROR(LEFT(F8,IFERROR(SEARCH(" ",F8),0)-1),F8))+1))))
답변2
왼쪽에 붙어 있는 값은 일반적으로 텍스트 값인 반면 숫자/날짜 값은 오른쪽에 정렬되어 있음을 의미합니다.
아마도 Excel에서 가능한 날짜 시간 변환을 수행하기 전에 다음 사항을 확인할 수도 있습니다.
시스템 언어/지역 설정, 특히 날짜 시간 형식을 확인하세요. Excel에서는 기본 시스템 날짜 시간 설정을 사용하므로 결과적으로 날짜 시간 변환은 지역마다 다릅니다.
셀 값에 추가 공백이나 숨겨진 줄 바꿈 문자가 없는지 확인하세요. 공백이 있는 유효한 날짜 시간 값은 날짜 시간이 아닌 텍스트 값으로 처리되므로 Excel에서 자동 변환되지 않습니다. .
DD/MM/YYYY와 같은 고유한 변환 규칙을 지정할 수 있는 Excel의 사용자 정의 셀 형식 옵션을 사용하세요.
답변3
아마도 소스 형식은 dd/mm/yyyy일 것입니다. 변환하려면 "텍스트를 열로" 기능을 사용해 보세요.
날짜 열 선택
데이터 > 텍스트를 열로 > 다음 > 다음 > "열 데이터 형식"에서 "날짜"를 선택하고 드롭다운에서 소스 형식을 선택합니다 - "DMY" > 확인
답변4
Excel의 기본 데이터 형식은 :dd/m/yyyy입니다. m/dd/yyyy를 선택했기 때문에 왼쪽 여백은 자동 변환되지 않습니다. 올바른 형식을 선택하면 문제가 해결됩니다.