Excel - Sample

조선왕조실록 기사의 날짜 변환

EGTools 2024. 7. 10. 00:18

어떤 분이 조선왕조실록의 날짜를 변환하는 방법을 Excel로 구현하셨길래,

1900~2100년의 음력/양력 변환을 함수로 만들어 둔것도 있고,

천문연구원의 음력/양력 API를 이용하여 기원전 59년부터 일일 날짜 정보를 수집한 것도 있고,,,

이 자료를 이용해서 API없이 1300~2100년까지 음력/양력 변환 및 

조선왕조실록 기사에서 음력 또는 양력(그레고리력)으로 변환할 수 있도록 함수를 만들었습니다.

 

EGTools 추가 기능에서 필요한 함수만 뽑아와서 만들었으므로 조금 가볍게 사용할 수 있습니다.

혹시 EGTools 추가기능을 사용하시는 분은 중복사용하지 않도록 주의하세요.

(중복 사용시 동일 함수명으로 어떤 부작용이 있을지 알 수 없습니다)

 

사용후 결과를 점검해 보시고, 오류가 있으면 알려 주세요.

 

최종수정일 : 2024-07-13 

JSDate.xlam
0.09MB

 

 

추가기능 설치후 아래 샘플 파일로 확인을 해 보세요.

조선왕조실록_샘플.xlsx
0.04MB

 

추가기능 설치 방법

아래 페이지를 참고하세요.

https://egtools.tistory.com/entry/Install-Excel-Add-In

 

함수 사용 방법

셀 어디에서나 수식 =JSDateManual() 을 입력하면 현재 화면을 볼 수 있습니다.

 

주의사항

추가기능에서 사용한 함수는 추가기능이 설치되지 않은 PC에서는 #NAME? 오류가 되므로

함수 사용한 파일을 공유할 경우 반드시 값으로 변경하여 저장해야 합니다.

JSDate( KingYear, [ Solar ], [ Delimiter ] ) : 기사에서 날짜를 발췌 변환
  KingYear "임금 #년 #월 #일" 형태나 이 형태를 포함한 문자열
  Solar 양력(그레고리력)으로 변환할 지 여부, True 면 양력, 생략하거나 False이면 음력

  Delimiter 날짜를 출력할 때 년/월/일을 구분하는 구분자, 생략하면 "-"로 YYYY-MM-DD가 됨
  ※ 주의사항 기사에서 일기를 고종 32년(1895년)까지는 음력으로, 고종33년(1896년)부터는 양력으로 처리함
(개국 504년(1895년) 11월 17일 음력고종 33년(1896년) 1월 1일 양력으로 한다는 기준)
1896년 1월부터의 날짜는 기사의 날짜와 다르게 나오는데, 자동으로 음력으로 전환된 결과라서 그렇게 됨, 양력 구분에 True를 해 주면 기사와 같은 양력 날짜가 됨.
     
JSKing( King, [ Index ] ) : 임금의 원년 년도 또는 몇 대 왕인지의 Index
  King 임금명
  Index 몇 대 왕인지(Index)로 출력할 지 여부, True로 하면 Index, 생략하거나 False이면 각 임금 원년의 연도 (즉위년이 아님에 주의)
     
JSDateExt( Text ) : 기사에서 "임금 #년 #월 #일" 형태로 기재된 부분만을 발췌
  Text 실록 기사
     
ToSolar( LunarCalendar, [ LeapMonth ] , [ Delimiter ] , [API] ) : 음력을 양력으로 변환
  LunarCalendar 음력일자로 YYYY-MM-DD, YYYY/MM/DD, YYYY.MM.DD, YYYYMMDD, YYYY/윤MM/DD, YYYY-MM-DD(윤) 의 형태중 하나
  LeapMonth 음력날짜가 윤달인지 여부, 생략하거나 Fasle이면 평달, True이면 윤달 (날짜에 '윤'이 들어가 있으면 무조건 True로 적용됨)
  Delimiter 양력으로 출력할 때 년/월/일을 구분하는 구분자, 생략하면 "-"
  API True로 지정하면 천문연구원의 API를 이용하여 직접 조회하여 결과 출력 (다량 작업시 속도 느림)
    음력날짜의 연도가 1300년보다 작으면 API를 이용하여 출력하므로 속도 느림
     
ToLunar( SolarCalendar, [ Delimiter ] , [API] ) : 양력을 음력으로 변환, 윤달은 날짜끝에 "(윤)"으로 표시
  SolarCalendar 양력일자로 YYYY-MM-DD, YYYY/MM/DD, YYYY.MM.DD, YYYYMMDD 형태중 하나 
  Delimiter 음력으로 출력할 때 년/월/일을 구분하는 구분자, 생략하면 "-"
  API True로 지정하면 천문연구원의 API를 이용하여 직접 조회하여 결과 출력 (다량 작업시 속도 느림)
    양력날짜의 연도가 1300년보다 작으면 API를 이용하여 출력하므로 속도 느림
     
JulianDay( SolarCalendar , [ Gregorian ] ) : 양력날짜를 율리우스 적일로 변환
  SolarCalendar 양력일자로 YYYY-MM-DD, YYYY/MM/DD, YYYY.MM.DD, YYYYMMDD 형태중 하나 
  Gregorian 날짜가 Gregorian인지 여부, False로 하면 율리우스력의 날짜를 계산함
     
JDtoDate( JD , [ Gregorian ] ) : 율리우스 적일을 양력 날짜로 변환
  JD 율리우스적일
  Gregorian 출력할 날짜가 Gregorian인지 여부, False로 하면 율리우스력의 날짜를 표시함
     
StrExt( Text, Pattern , [ Delimiter ] ) : 문자열에서 특정 패턴의 문자열을 추출 (정규식 가능)
  Text 추출할 원본 문자열
  Pattern 추출할 옵션이나 패턴 (아래 설명 참조)
  Delimiter 매칭하는 패턴이 여럿일 경우 각각을 구분하는 구분자
  ※ Pattern - Preset K : 한글
    H : 한자 및 중국어
    J : 일본어
    A : 영어 (A-Z, a-z)
    N : 숫자 (0~9, 소수점)
    S : 띄어쓰기나 탭
     -> 위 Preset 옵션은 혼합사용 가능 : AN = 영숫자
     
  ※ Pattern - RegExp 정규식 표현은 그대로 적용
    위에 소개된 JSDateExtStrExt( "기사본문",  "[^\s.]{2,3}\s.{1,3}년\s.{1,3}월\s.{1,2}일" )과 동일함