반응형

안녕하세요.

 

공문서 형식과 작성 방법을 정의하는 행정업무운영 편람에 따르면 공문서를 작성할 때 날짜를 적으려면 마침표를 연월일 다음에 모두 나타내야 합니다.

 

일반적으로 엑셀에서 날짜를 입력할 때는 연, 월 부분에만 마침표를 넣어 나타냅니다.

이 경우엔 [바꾸기] 기능을 이용해서 마침표빼기 기호(-)로 바꾸기만 하면 날짜 형식이 됩니다.

 

문제는 연월일 다음에 모두 마침표를 나타낸 경우엔 [바꾸기] 기능으로 마침표를 빼기 기호로 바꿔도 날짜 형식이 되지 않고 여전히 텍스트 형식으로 인식하는 것입니다.

 

 

유튜브 댓글로 신**님이 질문을 하셨습니다.

 

안녕하세요 여쭈어볼게있어 댓글을 남깁니다 제가 자료를 받을 때 날짜가 "2023. 1. 14."이런식으로 날짜가 옵니다 이걸 그대로 오름차순으로 하면 2023. 1. 7.이 먼저인데 밑으로 내려가더라고요 강사님이 알려주신대로 할려면 표시형식을 하더라도 0을 앞에 다 넣거나 해야하는데  제가 받은자료가 2017년부터 있어서 0을 하나하나 넣기에는 노가다가 되서요 쉬운방법이 있을까요?

 

날짜를 텍스트 형식으로 다루어도 화면에서 보여지는 모습은 알아 볼 수 있으니 상관없지만, 엑셀 기능을 써서 뭔가 처리를 하려면 날짜 형식 데이터여야만 합니다.

 

텍스트 형식으로 입력된 날짜를 날짜 형식으로 바꾸려면 엑셀의 몇 가지 기능을 이용하고 해서 몇 단계 걸쳐 바꾸는 방법도 있는데, 이 강좌에서는 하나의 수식으로 바꾸는 것을 소개하겠습니다.

 

실습 파일 다운로드

날짜형식으로 바꾸기_실습.xlsx
0.01MB

 

완성 파일 다운로드

날짜형식으로 바꾸기_완성.xlsx
0.01MB

 

공문서 작성 방법에 따른 날짜를 표시한 파일입니다.

 

마침표의 위치를 이용해서 바꾸는 수식

현재 입력된 데이터에 세 개의 마침표로 구분되어 있으니 마침표 위치를 확인한 뒤 LEFT, MID 함수를 이용해서 필요한 부분을 잘라내서 DATE 함수에 넣어 날짜 형식으로 바꾸는 방법입니다.

FIND 함수를 이용해서 마침표의 위치를 확인할 수 있는데, 첫번째 마침표 위치는 바로 찾을 수 있지만, 두번째 마침표 위치를 찾으려면 첫번째 마침표 위치를 알아야만 합니다.

그래서 두번째 마침표를 찾는 수식을 만들 때 수식에 첫번째 마침표를 찾는 수식을 포함해서 만들어야 하는 문제가 있습니다.

못할 건 없지만 수식이 상당히 복잡해 집니다.

 

첫번째 마침표 위치를 찾는 수식

=FIND(".",A2)

두번째 마침표 위치를 찾는 수식

=FIND(".",A2,FIND(".",A2)+1)

FIND 함수 마지막 인수인 Start_num은 찾기 시작할 위치를 나타냅니다.

첫번째 마침표 위치를 찾을 땐 생략해서 처음에서부터 찾고, 두번째 마침표 위치를 찾을 땐 첫번째 마침표 위치 다음부터 찾도록 앞에서 적었던 수식을 다시 한 번 적은 것입니다.

그래서 수식이 복잡해 집니다.

 

마이크로소프트 365엑셀 2021 버전에 새로 추가된 LET 함수를 이용하면 수식을 이름 정의해서 다른 수식에서 쓸 수 있습니다.

 

LET 함수를 이용해 두번째 마침표 위치를 찾는 수식입니다.

=LET(x,FIND(".",A2),FIND(".",A2,x+1))

첫번째 인수 값인 x는 사용자가 임의로 만든 이름으로 흔히 프로그래밍 언어의 변수와 같은 것입니다.

x의 값은 두번째 인수 수식의 결과입니다.

세번째 인수에서 x를 이용해 계산식을 작성합니다.

 

https://support.microsoft.com/ko-kr/office/let-%ED%95%A8%EC%88%98-34842dd8-b92b-4d3f-b325-b8b8f9908999

 

LET 함수 - Microsoft 지원

=LET(name1, name_value1, calculation_or_name2, [name_value2, calculation_or_name3...]) 인수 설명 name1 필수 지정할 첫 번째 이름입니다. 문자로 시작해야 합니다. 수식의 출력이거나 범위 구문과 충돌할 수 없습니다.

support.microsoft.com

 

 

[B2] 셀에 날짜 형식으로 변환하는 수식을 작성합니다.

=LET(x,FIND(".",A2),y,FIND(".",A2,x+1),z,FIND(".",A2,y+1),DATE(LEFT(A2,x-1),MID(A2,x+1,y-x-1),MID(A2,y+1,z-y-1)))

날짜에 해당하는 숫자 값으로 결과가 나타났습니다.

표시 형식으로 바꿀 수도 있지만 하나의 수식으로 결과를 나타내기 위해 TEXT 함수를 이용해서 날짜 형식으로 바꿉니다.

=TEXT(LET(x,FIND(".",A2),y,FIND(".",A2,x+1),z,FIND(".",A2,y+1),DATE(LEFT(A2,x-1),MID(A2,x+1,y-x-1),MID(A2,y+1,z-y-1))),"yyyy-mm-dd")

수식이 완성되었습니다.

 

마침표를 빼기 기호로 변환하고 마지막 글자를 지워서 날짜로 바꾸는 수식

앞의 수식으로 답변을 하고 나서 좀 더 궁리를 했습니다.

하나의 수식으로 원하는 결과를 구했기 때문에 더 고민하지 않아도 되지만, LET 함수는 최신 버전에서만 사용할 수 있는 함수라서 예전 버전을 쓰고 있는 대다수 업무 환경에서 쓸 수 없다는 문제가 있습니다.

 

이번에 생각한 방법은 SUBSTITUTE 함수를 이용해서 마침표를 빼기 기호로 바꾸고, LEN 함수로 전체 길이를 구한 후 LEFT 함수를 써서 마지막 글자만 빼고 가져와서 TEXT 함수를 이용해서 날짜 형식으로 나타내는 것입니다.

 

[C2] 셀에 수식을 작성합니다.

=TEXT(LEFT(SUBSTITUTE(A2,".","-"),LEN(A2)-1),"yyyy-mm-dd")

 

이 수식이 휠씬 간단하고, 대부분 환경에서 동작합니다.

한 번 더 생각했더니 좋은 방법을 찾았네요.

 

필요하시는 분께 도움이 되길 바랍니다.

반응형

+ Recent posts