excel公历转农历方法一:使用text函数
A列是公历日期,我们在B1单元格输入公式:=TEXT(A1,"[$-130000]yyyy年m月"&IF(LEN(--TEXT(A1,"[$-130000]dd"))=1,"初","")&"d"),下拉完成公历转农历。
excel公历转农历方法二:使用text+MID函数
A列仍然是公历,B1输入公式:=MID("甲乙丙丁戊己庚辛壬癸",MOD(TEXT(A1,"[$-130000]e")-4,10)+1,1)&MID("子丑寅卯辰巳午未申酉戌亥",MOD(TEXT(A1,"[$-130000]e")-4,12)+1,1)&"年"&TEXT(A1,"[$-130000][DBNum1]m月d日"即可。
excel公历转农历方法三:使用text+MID+CHOOSE+YEAR函数
A1为公历,B1输入:=CHOOSE(MOD(YEAR(A1)-1900,10)+1,"庚","辛","壬","癸","甲","乙","丙","丁","戊","己")&CHOOSE(MOD(YEAR(A1)-1900,12)+1,"子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥")&TEXT(A1,"[dbnum1][$-130000]年m月"&IF(--TEXT(A1,"[$-130000]d")<11,"初","")&TEXT(A1,"[dbnum1][$-130000]d"))
excel公历转农历方法四:使用自定义函数
上面介绍的excel公历转农历都是使用excel内置函数完成的,有一个弊端就是公式太长,如果使用自定义函数,在公式栏就可以简化输入。
如下图所示,我们在B2输入公式:=nongli(A2),即可。C列农历简称中C2公式是:=RIGHT(B2,LEN(B2)-8)。
关于自定义函数的使用方法请参考:
excel自定义函数添加和使用方法
PublicFunctionNongLi(OptionalXX_DATEAsDate)
DimMonthAdd(11),NongliData(99),TianGan(9),DiZhi(11),ShuXiang(11),DayName(30),MonName(12)
DimcurTime,curYear,curMonth,curDay
DimGongliStr,NongliStr,NongliDayStr
Dimi,m,n,k,isEnd,bit,TheDate
curTime=XX_DATE
'天干名称
TianGan(0)="甲"
TianGan(1)="乙"
TianGan(2)="丙"
TianGan(3)="丁"
TianGan(4)="戊"
TianGan(5)="己"
TianGan(6)="庚"
TianGan(7)="辛"
TianGan(8)="壬"
TianGan(9)="癸"
'地支名称
DiZhi(0)="子"
DiZhi(1)="丑"
DiZhi(2)="寅"
DiZhi(3)="卯"
DiZhi(4)="辰"
DiZhi(5)="巳"
DiZhi(6)="午"
DiZhi(7)="未"
DiZhi(8)="申"
DiZhi(9)="酉"
DiZhi(10)="戌"DiZhi(11)="亥"
'属相名称
ShuXiang(0)="鼠"ShuXiang(1)="牛"ShuXiang(2)="虎"ShuXiang(3)="兔"ShuXiang(4)="龙"ShuXiang(5)="蛇"ShuXiang(6)="马"ShuXiang(7)="羊"ShuXiang(8)="猴"ShuXiang(9)="鸡"ShuXiang(10)="狗"ShuXiang(11)="猪"'农历日期名DayName(0)="*"DayName(1)="初一"DayName(2)="初二"DayName(3)="初三"DayName(4)="初四"DayName(5)="初五"DayName(6)="初六"DayName(7)="初七"DayName(8)="初八"DayName(9)="初九"DayName(10)="初十"DayName(11)="十一"DayName(12)="十二"DayName(13)="十三"DayName(14)="十四"DayName(15)="十五"DayName(16)="十六"DayName(17)="十七"DayName(18)="十八"DayName(19)="十九"DayName(20)="二十"DayName(21)="廿一"DayName(22)="廿二"DayName(23)="廿三"
DayName(24)="廿四"DayName(25)="廿五"DayName(26)="廿六"DayName(27)="廿七"DayName(28)="廿八"DayName(29)="廿九"DayName(30)="三十"'农历月份名MonName(0)="*"MonName(1)="正"MonName(2)="二"MonName(3)="三"MonName(4)="四"MonName(5)="五"MonName(6)="六"MonName(7)="七"MonName(8)="八"MonName(9)="九"MonName(10)="十"MonName(11)="十一"MonName(12)="腊"'公历每月前面的天数MonthAdd(0)=0MonthAdd(1)=31MonthAdd(2)=59MonthAdd(3)=90MonthAdd(4)=120MonthAdd(5)=151MonthAdd(6)=181MonthAdd(7)=212MonthAdd(8)=243MonthAdd(9)=273MonthAdd(10)=304MonthAdd(11)=334
'农历数据
NongliData(0)=2635NongliData(1)=333387NongliData(2)=1701NongliData(3)=1748NongliData(4)=267701NongliData(5)=694NongliData(6)=2391NongliData(7)=133423NongliData(8)=1175