엑셀 날짜를 음력·한글·한자로 바꾸기 (로케일 서식)
사용자 지정 서식의 [$-xxyyzzzz] 로케일 코드를 쓰면 날짜를 음력이나 한글·한자 표기로 바꿀 수 있습니다.
엑셀 날짜를 음력으로 보거나 한자·한글로 표기해야 할 때가 있습니다. 함수를 새로 만들 필요 없이 사용자 지정 서식의 로케일 코드만으로 됩니다.
로케일 코드의 구조
로케일 코드는 $- 로 시작하는 8자리이며, 자리마다 뜻이 다릅니다.
[$-xxyyzzzz]
| 자리 | 정하는 것 | 기본값 |
|---|---|---|
| xx | 숫자·날짜를 어떤 문자로 쓸지 (한글·한자·영어 등) | 00 |
| yy | 달력 종류 (양력·음력·단군기원 등) | 00 |
| zzzz | 표시 언어 | 0000 |
전부 기본값($-00000000)이면 윈도우에 설정된 언어를 따릅니다.
바로 쓰는 예제
모두 2019-12-24 를 넣었을 때의 결과입니다.
양력 · 한자(중국어 간체)
=TEXT(셀,"[$-1E000404]yyyy年 mm月 dd日") → 二○一九年 十二月 二十四日
음력 · 한자
=TEXT(셀,"[$-1E0E0404]yyyy年 mm月 dd日") → 二○一九年 十一月 二十八日 (음력 2019-11-28)
가운데 0E 가 달력을 음력으로 바꾸는 부분입니다. 이 두 자리만 바꾸면 같은 날짜가 음력으로 계산됩니다.
양력 · 한글 (숫자 읽기)
=TEXT(셀,"[$-27000412]yyyy년 mm월 dd일") → 이영일구년 십이월 이십사일
양력 · 한자 번체(갖은자)
=TEXT(셀,"[$-25000412]yyyy年 mm月 dd日") → 貳零壹九年 壹拾貳月 貳拾四日
자릿수를 읽어 주는 표기가 필요하다면
위 방식은 숫자를 한 글자씩 바꿉니다(2019 → 이영일구). '이천십구년'처럼 자릿수를 읽으려면 DBNum 서식과 함께 연·월·일을 나눠 조립합니다.
'// 한글 =TEXT(YEAR(셀),"[DBNum4]G/표준")&"년 "&TEXT(MONTH(셀),"[DBNum4]G/표준")&"월 "&TEXT(DAY(셀),"[DBNum4]G/표준")&"일" → 이천일십구년 일십이월 이십사일 '// 한자 =TEXT(YEAR(셀),"[DBNum1]G/표준")&"年 "&TEXT(MONTH(셀),"[DBNum1]G/표준")&"月 "&TEXT(DAY(셀),"[DBNum1]G/표준")&"日" → 二千一十九年 一十二月 二十四日
주의 : TEXT 함수의 결과는 글자(텍스트) 입니다. 날짜 계산에 다시 쓸 수 없으니, 계산이 필요한 값은 원본 날짜를 그대로 두고 표시용 열을 따로 두세요.
오빠두Tip : 화면 표시만 바꾸면 될 때는 TEXT 함수 대신 [셀 서식] - [사용자 지정] 에 같은 코드를 넣으세요. 값은 날짜 그대로 남아 계산에 계속 쓸 수 있습니다.
표기 방식 코드 (xx)
숫자를 어떤 문자로 쓸지 정합니다. 실무에서 자주 쓰는 것은 굵게 표시했습니다.
| 코드 | 표기 |
|---|---|
| 00 | 시스템 기본값 (제어판 설정) |
| 01 | 영어 |
| 0D · 0E · 0F | 태국어 · 라오스어 · 티베트어 |
| 1B · 1C · 1D | 일본어 1 · 2 · 3 |
| 1E | 중국어 간체 1 (소문자) |
| 1F · 20 | 중국어 간체 2 (대문자) · 3 (전각) |
| 21 | 중국어 번체 1 (소문자) |
| 22 · 23 | 중국어 번체 2 (대문자) · 3 (전각) |
| 24 | 한국어 1 (한자 간체) |
| 25 | 한국어 2 (한자 번체 · 갖은자) |
| 26 | 한국어 3 (숫자) |
| 27 | 한국어 4 (한글) |
달력 코드 (yy)
| 코드 | 달력 |
|---|---|
| 00 | 시스템 기본값 |
| 01 | 그레고리력 (양력, 시스템 기준) |
| 02 | 그레고리력 (양력, 미국) |
| 03 | 일본 |
| 04 | 대만 (중화민국력) |
| 05 | 한국 (단군기원) |
| 06 · 07 · 08 | 아랍 음력 · 태국 · 유대력 |
| 11 · 12 · 13 | 음력 1 · 2 · 3 (비공식) |
| 0E | 음력 4 (비공식) — 한국 음력에 사용 |
표시 언어 코드 (zzzz)
자주 쓰는 것만 추렸습니다. 전체 목록은 아래 참고 문서에서 볼 수 있습니다.
| 코드 | 언어 |
|---|---|
| 0412 | 한국어 |
| 0409 | 영어 (미국) |
| 0809 | 영어 (영국) |
| 0411 | 일본어 |
| 0404 | 중국어 번체 |
| 0804 | 중국어 간체 |
| 0407 · 040C · 0410 | 독일어 · 프랑스어 · 이탈리아어 |
| 0419 · 0416 | 러시아어 · 포르투갈어 |
주의 : 앞 두 자리(xx)의 표기 방식과 뒤 네 자리(zzzz)의 표시 언어가 서로 맞지 않으면 엉뚱한 결과가 나옵니다. 한글 표기(27)에는 한국어(0412)를, 한자 표기(1E·21)에는 중국어(0404·0804)를 짝지어 쓰세요.
참고 문서
- 언어 식별자 상수 및 문자열 전체 목록 — Microsoft Learn
- 양력·음력 변환표 (1980~2040년) — 오빠두엑셀
이게 다른 사람이 올린 것보다 정확해서 쓰려고 했는데
천문관 홈페이지에서 양력을 음력으로 해서 확인해보니 2042년 03월 22일부터는 음력이 틀렸네요
https://astro.kasi.re.kr/life/pageView/8
다른 변환 사이트에서도 마찬가지구요
2042년 3월 21일은 02월 30일이 음력, 2042년 3월 22일은 02월 1일이 음력이네요
첨엔 변환 사이트가 틀렸다고 생각했지만 아닌 것 같습니다
제가 음력을 잘 몰라서 왜 틀렸는지 설명은 못하겠지만 그 점을 수정해야 될 것 같아요
이거 외에도 윤달이면 그냥 다 맞지 않아요
감사합니다
네 말씀하신 내용이 맞습니다. 사실 저도 양력<->음력이 어떤 원리로 계산되는지는.. 정확히 알지를 못합니다.
윤달도 고려해야하고, 윤달 말고도 주기적으로 양력/음력을 맞춰주는 작업이 필요하다고 알고 있는데요.
엑셀에서 제공하는 양력<->음력 변환 서식은 사실 이런 부분을 모두 반영하지를 못합니다..
저도 위 페이지는 처음 보았는데, 위 페이지가 정확한 정보를 제공하고, 그리고 양력<->음력의 정확한 정보가 필요하다면 웹 스크랩 으로 접근해보는건 어떠실까요?^^
예를들어 위와 같이 입력하면 2020년 1월 1일의 음력정보를 받아옵니다..
소중한 정보 확인 감사드리며, 제시해드린 답변이 조금이나마 도움이 되셨길 바랍니다.
저도 달력(음력이 포함된)이 필요하여 적용해 보니
오늘(2021-02-09) 음력 표기가 [2020년 13월 28일]로 표기..
윤달 때문인듯 합니다..
혹시 음력 -> 양력은 이방법으로 불가할지 여쭤보고 싶습니다..
음력->양력은 셀 서식으로 변경이 불가능합니다. 음력 -> 양력 변환은 VBA를 사용하셔야만 가능합니다.
아래 링크를 참고해보세요.
https://www.programmersought.com/article/83554995208/
제가 매년 설을 함수로만 구현하기 위해 만든 수식인데요.
=DATE(YEAR(TODAY()),IF(MID(TEXT(DATE(YEAR(TODAY()),2,1),"[$-120000]yyyy-mm-dd"),6,2)="01",2,3),1)-DAY(TEXT(DATE(YEAR(TODAY()),IF(MID(TEXT(DATE(YEAR(TODAY()),2,1),"[$-120000]yyyy-mm-dd"),6,2)="01",2,3),1),"[$-120000]yyyy-mm-dd"))+1
(우리나라의 음력 달력은 음력 2(비공식)을 사용하는 것 같습니다. 1을 넣었을 때 오류가 있었습니다. 물론 3, 4는 아직 확인을 안 해본 터라 뭐라 말씀드리기가 그렇네요.)
이걸 좀 더 다듬어서 활용해본다면 복잡이야 하겠지만 엑셀 자체의 로케일과 함수들의 조합만으로 계산하여 음력 날짜 계산을 함수 만으로 하는 것이 가능하지 않을까 하는 생각에 공유해봅니다. (물론 윤달 문제까지는 고려하지 않았습니다만 ㅠㅠ 그 부분도 좀 더 정교화해볼 수 있으면 좋겠네요.. 확인해보니 윤달이 윤 몇월인가는 계산하지 않고 무조건 윤달이 있는 해는 13월로 계산해버리더라고요.. 이렇게 되면 윤2월 이런거 들어오면 전체적으로 밀리는데 문제는 그 윤달이 몇월인지 계산하는 방법도 애매합니다.)
맨날 얻어가기만 해서 어줍잖게나마 댓글 달아봅니다.
늘 감사합니다.