기금넷 공식사이트 - 재경 문답 - Excel 양력을 음력 공식으로 바꾸시겠습니까?
Excel 양력을 음력 공식으로 바꾸시겠습니까?
엑셀에 내장된 기능을 완벽하게 구현할 수는 없지만, 적어도 윤달의 경우에는 문제가 있을 것입니다.
기능을 사용자 정의하려면 VBA 프로그래밍을 사용하는 것만 고려할 수 있습니다.
그림 1: 효과 표시:
효과 표시
그림 2: 단계 다이어그램:
단계 다이어그램
p>그림 3: 전체 코드 다이어그램:
단계:
1. 파일이 .xlsx 형식인 경우 .xlsm 형식으로 저장해야 합니다. 매크로 사용 통합 문서.
2. Alt F11을 눌러 코드 편집기를 엽니다.
3. 왼쪽 열에서 "삽입" - "모듈"을 클릭합니다. -모듈을 클릭하세요.
5. 오른쪽 편집 영역에 코드를 붙여넣으세요.
6. 코드가 오류를 보고하고 빨간색으로 변하는지 확인하세요.
7. 코드 편집 장치를 닫습니다.
중요 사항:
참고 1. Baidu는 여기에서 복사한 코드 줄 사이에 추가 빈 줄을 삽입합니다. 이로 인해 코드 오류가 빨간색으로 바뀌면 그냥 삭제하면 됩니다. 그 사이에 빈 줄이 있습니다.
참고 2. 이 코드는 날짜 범위 제한이 있으며 1921년 음력 1월 1일부터 2100년 음력 12월 30일까지의 범위만 변환할 수 있습니다. 해당 그레고리력 범위는 1921/2/8 ~ 2100/2/8입니다.
참고 3. 표에서 수식을 사용할 때 수식에 날짜를 직접 쓰거나 날짜를 참조할 수 있습니다. 특정 세포.
예 1, 특정 날짜 변환:
=iNlStr(DATE(2020, 8, 18))
예 2, 항상 오늘 날짜 변환:
=iNlStr(TODAY())
예 3, 셀 참조에서 날짜 변환:
=iNlStr(A1)
코드 다음과 같이 복사할 수 있습니다:
Option Explicit
Public tf As Boolean '
Public sZhouJ As Variant 'Week array
공개 sTiGan 변형 '10개의 천간 배열'
공개 sDiZhi 변형 '12지상 가지 배열'
공개 sSXiao 변형 '12궁 배열'
Public sNlMon As Variant '음력 월 배열
Public sNlDay As Variant '음력 일 배열
Public sNlShu As Variant '음력 데이터 배열
Sub 배열 로드( )
sZhouJ = Split("*/Monday/Tuesday/Wednesday/Thursday/Friday/Saturday/Day", "/") '주 배열
sTiGan = Split ("A / Yi / B / D / Wu / Ji / Geng / Xin / Ren / Gui", "/") '천간 배열
sDiZhi = Split("Zi/Chou/Yin/Mao /Chen/Si /Wu/Wei/Shen/You/Xu/Hai", "/") '지구 가지 배열
sSXiao = Split("쥐/소/호랑이/토끼/용/뱀/ 말/양/원숭이 /닭/개/돼지", "/") '황도대 배열
sNlMon = Split("*/첫 번째 달/2월/3월/4월/5월/6월/7월/8 월/9월/10월/겨울월/음력 12월", "/") '월 배열
sNlDay = Split(_
"*/음력 1일/ 음력 2일/1일 셋째/넷째/다섯째/여섯째/일곱째/여덟째/아홉째/십일" _
amp; "/11/12/13/14/15 / 16/17/18/19/20" _
amp; "/21/22/23/24/25/26/27 /28 /29/30", "/") '일 배열
sNlShu = Split( _
"002635/333387/001701/001748/267701/000694 /002391/133423/001175/396438/"amp; _
"003402/003749/331177/001453/000694/201326/002350/465197/003221/003402/p>
. p> " 400202/002901/001386/267611/000605/002349/137515/002709/464533/001738/" _"002901/330421/001242/002651/199255/0013 23/529706/003733/ 001706/ 398762/"amp; _
"002741/001206/267438/002647/001318/204070/003477/461653/001386/002413/" _
"330077/001197/002637/268877/003365/5311 09 /002900/002922/398042 / 002395/" 앰프; _
"001179/267415/002635/661067/001701/001748/398772/002742/002391/330031/" 앰프; _
"001175/001611 / 200010/003749/527717/001452/002742/332397/002350/003222/" _
"268949/003402/003493/133973/001386/464219/000605/0023 49 /334123/002709/" 앰프; _
"002890/267946/002773/592565/001210/002651/395863/001323/002707/265877/" _
"001706/002773/133557/001206 /397 998 /002638/003366/335142/003411/001450/" _
"200042/002413/723293/001197/002637/399947/003365/003410/334676/0029 06/"amp; /p>
"001389/133467/001179/464023/002635/002725/333477/001746/002778/199350/" _
"002359/526639/001175/001611/39661 8/ 003749 /001714 /267628/002734/002350/" 앰프; _
"203054/003222/465557/003402/003493/330581/001386/002669/264797/001325/" 앰프; _
"529707/002709/002890/399018/002773/001370/267450/002651/001323/202023/" _
"001683/462419/001706/002773/330165/00 1206 /002647/264782 /003366/ 531750/" amp; _
"003410/003498/396650/001389/001198/267421/002637/003349/138021", "/") '음력 데이터
tf = True '표시, 배열이 로드되었습니다.
End Sub
Function iNlStr(iDate As Date) As String '그레고리력을 음력으로 변환
If Not tf 그런 다음 전화하세요
배열 로드
Dim i, tamp;, k, m, n, ext, bitamp;
'1921-2-8(즉, 음력 첫 번째 날의 첫날)부터 계산합니다. 1921년 월) 목표 날짜까지의 총 일수
t = iDate - #2/8/1921# 1
'음력의 년, 월 및 값을 계산합니다. day
Do
p>If Val(sNlShu(m)) lt 4095 Then k = 11 Else k = 12
n = k
Do
' sNlShu(m)의 n번째 바이너리 비트 값을 가져옵니다.
bit = Val(sNlShu(m))
For i = 1 To n
bit = bit \ 2
다음
bit = bit Mod 2
'값을 계산합니다 음력 일
If t lt; = 29비트 Then
ext = 1
종료 Do
End If
t = t - 29 - bit
n = n - 1
n 0까지 반복
If ext Then Exit Do
m = m 1
False까지 반복
'음력의 세 가지 값을 계산합니다.
Dim cy, cm, cd
cy = 1921 m? '음력의 값
cm = k - n 1 '음력의 값
cd = t ?' 음력 일의 값
If k = 12 그러면
Select Case Val(sNlShu(m)) \ 65536 1 'cm 값을 수정하세요
케이스는 cm입니다.
cm = 1 - cm
케이스는 cm입니다.
cm = cm - 1
선택 종료
End If
'중국어 텍스트 계산
Dim ar (1 To 5) As String
m = ((cy - 4) Mod 60) Mod 10 'Tiangan 지수 값
n = ((cy - 4) Mod 60) Mod 12 '지구의 가지와 황도대 지수 값
If cm lt 1 Then ar; (1) = "도약"
ar(1) = ar(1) amp; sNlMon(Abs( cm)) '음월
ar(2) = sNlDay(cd ) '음력일
>
ar(3) = sTiGan(m) & sDiZhi(n) ?'달의 줄기와 가지
ar(4) = sSXiao(n) ?'달의 황도대
ar(5) = sZhouJ(Weekday(iDate, 2)) '금주의 한자
'배열 출력 결과(팁: 배열 ar(1 ~ 5)***5 요소, 가능) 필요에 따라 자유롭게 일치 출력 결과)
iNlStr = ar(3) amp; ar(4) " " amp; "주" amp ; ar(5) '결과 출력
함수 종료
- 관련 기사
- 인터뷰를 통해 5학년을 위한 400자 에세이 작성 방법
- 린단은 공식적으로 세계랭킹에서 제외됐다. 배드민턴계에서의 그의 위상은?
- 파키스탄인들은 중국에 대해 어떻게 생각하나요?
- 추천 중국소설 네 권
- 잭 마(Jack Ma)는 아시아 최고의 부자입니다. 현재 세계에서 가장 부자는 누구입니까? 둘 사이의 차이는 얼마나 큽니까?
- 소규모 수업을 위한 건전한 노래와 춤 레슨 계획의 텍스트 분석
- 한국에서 서울 지하철 버스 통근이 왜 무료인가요?
- 연간 개인세 계산이란 무엇을 의미하나요?
- Xunxian Biluo Xianfu와 싸우는 방법
- SL9400과 T8400 중 어느 것이 더 좋나요?