excel表格如何显示农历日期
设置excel表格日期显示为农历的步骤如下:
1、打开需要操作的excel表格,在A1单元格输入如下函数:“=TEXT(NOW(),"[$-130000]YYYY-M-D")”。
2、单元格中可以观察到出现了一个日期:农历日期为六月初一。
3、如果要将农历形式完全显示出来,就可以输入下列公式:=MID(" 甲乙丙丁戊己庚辛壬癸",MOD(TEXT(NOW(),"[$-130000]e")-4,10)+1,1)&MID("子丑寅卯辰巳午未申酉 戌亥",MOD(TEXT(NOW(),"[$-130000]e")-4,12)+1,1)&"年"&TEXT(NOW()," [$-130000][DBNum1]m月d日")。
2023-08-24 广告
简单版:
B2单元格就是第一种情况,“2016-9-17”表示农历是九月十七日。该公式是:=TEXT(A2,'[$-130000]YYYY-M-D')。
TEXT()用来转化文本格式,这个公式的关键是:[$-130000],它是Excel中阳历转化农历的参数,不过它存在一个问题就是没法计算闰月,估计老外无法理解中国人闰月的概念,凡是闰年,它直接表示一年13个月,道理是一样的。
进阶版:
C2单元格,相比较B2单元格呈现就有了进阶,以中文呈现,并且以天干地支表现年份。
公式相对之前肯定复杂:=MID(' 甲乙丙丁戊己庚辛壬癸',MOD(TEXT(A2,'[$-130000]e')-4,10) 1,1)&MID('子丑寅卯辰巳午未申酉 戌亥',MOD(TEXT(A2,'[$-130000]e')-4,12) 1,1)&'年'&TEXT(A2,' [$-130000][DBNum1]m月d日')。
可以分解为两大部分:
1、计算年份:MID(' 甲乙丙丁戊己庚辛壬癸',MOD(TEXT(A2,'[$-130000]e')-4,10) 1,1)&MID('子丑寅卯辰巳午未申酉 戌亥',MOD(TEXT(A2,'[$-130000]e')-4,12) 1,1)&'年',这里加了MID()文本提取函数来获取天干地支。
2、计算月日:TEXT(A2,' [$-130000][DBNum1]m月d日'),这里增加了参数[DBNum1],表示数值以“一、而二、三......”中文格式显示。两者组合一起的就是C列结果。完美版作为中国人,我们知道“一月”不叫“一月”,叫“正月”。
“十二月”不叫“十二月”,叫“腊月”;同样每月前10天,是初一、初二......20日开始是廿、廿一......30日是卅等等。
这个需要VBA了.本人从网上搜到的,不是本人的成果,供参考。本人也收藏了。祝您顺利。
按ALT搜索+F11 再 插入 模块
把下面的代码制复制到模块中,然后 在B1中输入:
=calendar(A1)
假设日期在A1
Option Explicit
Dim WeekName(7), MonthAdd(11), NongliData(120), TianGan(9), DiZhi(11), ShuXiang(11), DayName(30), MonName(12)
Dim curTime, curYear, curMonth, curDay, curWeekday
Dim GongliStr, WeekdayStr, NongliStr, NongliDayStr
Dim i, m, n, k, isEnd, bit, TheDate, num1, num2
Dim year, month, day, grid, grid_date
Function calendar(grid)
grid_date = grid
year = Mid(grid_date, 1, 4)
num1 = InStr(grid_date, "-")
num2 = InStr(6, grid_date, "-")
If (num2 - num1) = 3 Then
month = Mid(grid_date, 6, 2)
day = Mid(grid_date, 9, 2)
Else
month = Mid(grid_date, 6, 1)
day = Mid(grid_date, 8, 2)
End If
'星期名
WeekName(0) = " * "
WeekName(1) = "星期日"
WeekName(2) = "星期一"
WeekName(3) = "星期二"
WeekName(4) = "星期三"
WeekName(5) = "星期四"
WeekName(6) = "星期五"
WeekName(7) = "星期六"
'天干名称
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) = 0
MonthAdd(1) = 31
MonthAdd(2) = 59
MonthAdd(3) = 90
MonthAdd(4) = 120
MonthAdd(5) = 151
MonthAdd(6) = 181
MonthAdd(7) = 212
MonthAdd(8) = 243
MonthAdd(9) = 273
MonthAdd(10) = 304
MonthAdd(11) = 334
'农历数据
NongliData(0) = 2635
NongliData(1) = 333387
NongliData(2) = 1701
NongliData(3) = 1748
NongliData(4) = 267701
NongliData(5) = 694
NongliData(6) = 2391
NongliData(7) = 133423
NongliData(8) = 1175
NongliData(9) = 396438
NongliData(10) = 3402
NongliData(11) = 3749
NongliData(12) = 331177
NongliData(13) = 1453
NongliData(14) = 694
NongliData(15) = 201326
NongliData(16) = 2350
NongliData(17) = 465197
NongliData(18) = 3221
NongliData(19) = 3402
NongliData(20) = 400202
NongliData(21) = 2901
NongliData(22) = 1386
NongliData(23) = 267611
NongliData(24) = 605
NongliData(25) = 2349
NongliData(26) = 137515
NongliData(27) = 2709
NongliData(28) = 464533
NongliData(29) = 1738
NongliData(30) = 2901
NongliData(31) = 330421
NongliData(32) = 1242
NongliData(33) = 2651
NongliData(34) = 199255
NongliData(35) = 1323
NongliData(36) = 529706
NongliData(37) = 3733
NongliData(38) = 1706
NongliData(39) = 398762
NongliData(40) = 2741
NongliData(41) = 1206
NongliData(42) = 267438
NongliData(43) = 2647
NongliData(44) = 1318
NongliData(45) = 204070
NongliData(46) = 3477
NongliData(47) = 461653
NongliData(48) = 1386
NongliData(49) = 2413
NongliData(50) = 330077
NongliData(51) = 1197
NongliData(52) = 2637
NongliData(53) = 268877
NongliData(54) = 3365
NongliData(55) = 531109
NongliData(56) = 2900
NongliData(57) = 2922
NongliData(58) = 398042
NongliData(59) = 2395
NongliData(60) = 1179
NongliData(61) = 267415
NongliData(62) = 2635
NongliData(63) = 661067
NongliData(64) = 1701
NongliData(65) = 1748
NongliData(66) = 398772
NongliData(67) = 2742
NongliData(68) = 2391
NongliData(69) = 330031
NongliData(70) = 1175
NongliData(71) = 1611
NongliData(72) = 200010
NongliData(73) = 3749
NongliData(74) = 527717
NongliData(75) = 1452
NongliData(76) = 2742
NongliData(77) = 332397
NongliData(78) = 2350
NongliData(79) = 3222
NongliData(80) = 268949
NongliData(81) = 3402
NongliData(82) = 3493
NongliData(83) = 133973
NongliData(84) = 1386
NongliData(85) = 464219
NongliData(86) = 605
NongliData(87) = 2349
NongliData(88) = 334123
NongliData(89) = 2709
NongliData(90) = 2890
NongliData(91) = 267946
NongliData(92) = 2773
NongliData(93) = 592565
NongliData(94) = 1210
NongliData(95) = 2651
NongliData(96) = 395863
NongliData(97) = 1323
NongliData(98) = 2707
NongliData(99) = 265877
'生成当前公历年、月、日 ==> GongliStr
curYear = year
curMonth = month
curDay = day
GongliStr = curYear & "年"
If (curMonth < 10) Then
GongliStr = GongliStr & "0" & curMonth & "月"
Else
GongliStr = GongliStr & curMonth & "月"
End If
If (curDay < 10) Then
GongliStr = GongliStr & "0" & curDay & "日"
Else
GongliStr = GongliStr & curDay & "日"
End If
'生成当前公历星期 ==> WeekdayStr
curWeekday = Weekday(curTime)
WeekdayStr = WeekName(curWeekday)
'计算到初始时间1921年2月8日的天数:1921-2-8(正月初一)
TheDate = (curYear - 1921) * 365 + Int((curYear - 1921) / 4) + curDay + MonthAdd(curMonth - 1) - 38
If ((curYear Mod 4) = 0 And curMonth > 2) Then
TheDate = TheDate + 1
End If
'计算农历天干、地支、月、日
isEnd = 0
m = 0
Do
If (NongliData(m) < 4095) Then
k = 11
Else
k = 12
End If
n = k
Do
If (n < 0) Then
Exit Do
End If
'获取NongliData(m)的第n个二进制位的值
bit = NongliData(m)
For i = 1 To n Step 1
bit = Int(bit / 2)
Next
bit = bit Mod 2
If (TheDate <= 29 + bit) Then
isEnd = 1
Exit Do
End If
TheDate = TheDate - 29 - bit
n = n - 1
Loop
If (isEnd = 1) Then
Exit Do
End If
m = m + 1
Loop
curYear = 1921 + m
curMonth = k - n + 1
curDay = TheDate
If (k = 12) Then
If (curMonth = (Int(NongliData(m) / 65536) + 1)) Then
curMonth = 1 - curMonth
ElseIf (curMonth > (Int(NongliData(m) / 65536) + 1)) Then
curMonth = curMonth - 1
End If
End If
'生成农历天干、地支、属相 ==> NongliStr
NongliStr = "农历" & TianGan(((curYear - 4) Mod 60) Mod 10) & DiZhi(((curYear - 4) Mod 60) Mod 12) & "年"
NongliStr = NongliStr & "(" & ShuXiang(((curYear - 4) Mod 60) Mod 12) & ""
'生成农历月、日 ==> NongliDayStr
If (curMonth < 1) Then
NongliDayStr = "闰" & MonName(-1 * curMonth)
Else
NongliDayStr = MonName(curMonth)
End If
NongliDayStr = NongliDayStr & "月"
NongliDayStr = NongliDayStr & DayName(curDay) & ")"
calendar = NongliStr & NongliDayStr
End Function
——————————————PS 在网上借鉴的相关资料
本回答由提问者推荐
举报| 答案纠错 | 评论(2)
8 0
挑澄流浪
采纳率:26% 擅长: 手机使用 常见软件 武术搏击 生物学 办公软件
其他回答
将下面面这段代码保存在模块中,就可以用公式 =nongli(A1) 调用了。
Public Function NongLi(Optional XX_DATE As Date)
Dim MonthAdd(11), NongliData(99), TianGan(9), DiZhi(11), ShuXiang(11), DayName(30), MonName(12)
Dim curTime, curYear, curMonth, curDay
Dim GongliStr, NongliStr, NongliDayStr
Dim i, 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) = 0
MonthAdd(1) = 31
MonthAdd(2) = 59
MonthAdd(3) = 90
MonthAdd(4) = 120
MonthAdd(5) = 151
MonthAdd(6) = 181
MonthAdd(7) = 212
MonthAdd(8) = 243
MonthAdd(9) = 273
MonthAdd(10) = 304
MonthAdd(11) = 334
'农历数据
NongliData(0) = 2635
NongliData(1) = 333387
NongliData(2) = 1701
NongliData(3) = 1748
NongliData(4) = 267701
NongliData(5) = 694
NongliData(6) = 2391
NongliData(7) = 133423
NongliData(8) = 1175
NongliData(9) = 396438
NongliData(10) = 3402
NongliData(11) = 3749
NongliData(12) = 331177
NongliData(13) = 1453
NongliData(14) = 694
NongliData(15) = 201326
NongliData(16) = 2350
NongliData(17) = 465197
NongliData(18) = 3221
NongliData(19) = 3402
NongliData(20) = 400202
NongliData(21) = 2901
NongliData(22) = 1386
NongliData(23) = 267611
NongliData(24) = 605
NongliData(25) = 2349
NongliData(26) = 137515
NongliData(27) = 2709
NongliData(28) = 464533
NongliData(29) = 1738
NongliData(30) = 2901
NongliData(31) = 330421
NongliData(32) = 1242
NongliData(33) = 2651
NongliData(34) = 199255
NongliData(35) = 1323
NongliData(36) = 529706
NongliData(37) = 3733
NongliData(38) = 1706
NongliData(39) = 398762
NongliData(40) = 2741
NongliData(41) = 1206
NongliData(42) = 267438
NongliData(43) = 2647
NongliData(44) = 1318
NongliData(45) = 204070
NongliData(46) = 3477
NongliData(47) = 461653
NongliData(48) = 1386
NongliData(49) = 2413
NongliData(50) = 330077
NongliData(51) = 1197
NongliData(52) = 2637
NongliData(53) = 268877
NongliData(54) = 3365
NongliData(55) = 531109
NongliData(56) = 2900
NongliData(57) = 2922
NongliData(58) = 398042
NongliData(59) = 2395
NongliData(60) = 1179
NongliData(61) = 267415
NongliData(62) = 2635
NongliData(63) = 661067
NongliData(64) = 1701
NongliData(65) = 1748
NongliData(66) = 398772
NongliData(67) = 2742
NongliData(68) = 2391
NongliData(69) = 330031
NongliData(70) = 1175
NongliData(71) = 1611
NongliData(72) = 200010
NongliData(73) = 3749
NongliData(74) = 527717
NongliData(75) = 1452
NongliData(76) = 2742
NongliData(77) = 332397
NongliData(78) = 2350
NongliData(79) = 3222
NongliData(80) = 268949
NongliData(81) = 3402
NongliData(82) = 3493
NongliData(83) = 133973
NongliData(84) = 1386
NongliData(85) = 464219
NongliData(86) = 605
NongliData(87) = 2349
NongliData(88) = 334123
NongliData(89) = 2709
NongliData(90) = 2890
NongliData(91) = 267946
NongliData(92) = 2773
NongliData(93) = 592565
NongliData(94) = 1210
NongliData(95) = 2651
NongliData(96) = 395863
NongliData(97) = 1323
NongliData(98) = 2707
NongliData(99) = 265877
'生成当前公历年、月、日 ==> GongliStr
curYear = Year(curTime)
curMonth = Month(curTime)
curDay = Day(curTime)
GongliStr = curYear & "年"
If (curMonth < 10) Then
GongliStr = GongliStr & "0" & curMonth & "月"
Else
GongliStr = GongliStr & curMonth & "月"
End If
If (curDay < 10) Then
GongliStr = GongliStr & "0" & curDay & "日"
Else
GongliStr = GongliStr & curDay & "日"
End If
'计算到初始时间1921年2月8日的天数:1921-2-8(正月初一)
TheDate = (curYear - 1921) * 365 + Int((curYear - 1921) / 4) + curDay + MonthAdd(curMonth - 1) - 38
If ((curYear Mod 4) = 0 And curMonth > 2) Then
TheDate = TheDate + 1
End If
'计算农历天干、地支、月、日
isEnd = 0
m = 0
Do
If (NongliData(m) < 4095) Then
k = 11
Else
k = 12
End If
n = k
Do
If (n < 0) Then
Exit Do
End If
'获取NongliData(m)的第n个二进制位的值
bit = NongliData(m)
For i = 1 To n Step 1
bit = Int(bit / 2)
Next
bit = bit Mod 2
If (TheDate <= 29 + bit) Then
isEnd = 1
Exit Do
End If
TheDate = TheDate - 29 - bit
n = n - 1
Loop
If (isEnd = 1) Then
Exit Do
End If
m = m + 1
Loop
curYear = 1921 + m
curMonth = k - n + 1
curDay = TheDate
If (k = 12) Then
If (curMonth = (Int(NongliData(m) / 65536) + 1)) Then
curMonth = 1 - curMonth
ElseIf (curMonth > (Int(NongliData(m) / 65536) + 1)) Then
curMonth = curMonth - 1
End If
End If
'生成农历天干、地支、属相 ==> NongliStr
NongliStr = "农历" & TianGan(((curYear - 4) Mod 60) Mod 10) & DiZhi(((curYear - 4) Mod 60) Mod 12) & "年"
NongliStr = NongliStr & "(" & ShuXiang(((curYear - 4) Mod 60) Mod 12) & ")"
'生成农历月、日 ==> NongliDayStr
If (curMonth < 1) Then
NongliDayStr = "闰" & MonName(-1 * curMonth)
Else
NongliDayStr = MonName(curMonth)
End If
NongliDayStr = NongliDayStr & "月"
NongliDayStr = NongliDayStr & DayName(curDay)
NongLi = NongliStr & NongliDayStr
End Function
2017-08-29
简单版:
B2单元格就是第一种情况,“2016-9-17”表示农历是九月十七日。该公式是:=TEXT(A2,'[$-130000]YYYY-M-D')。TEXT()用来转化文本格式,这个公式的关键是:[$-130000],它是Excel中阳历转化农历的参数,不过它存在一个问题就是没法计算闰月,估计老外无法理解中国人闰月的概念,凡是闰年,它直接表示一年13个月,道理是一样的。
进阶版:
C2单元格,相比较B2单元格呈现就有了进阶,以中文呈现,并且以天干地支表现年份。公式相对之前肯定复杂:=MID(' 甲乙丙丁戊己庚辛壬癸',MOD(TEXT(A2,'[$-130000]e')-4,10) 1,1)&MID('子丑寅卯辰巳午未申酉 戌亥',MOD(TEXT(A2,'[$-130000]e')-4,12) 1,1)&'年'&TEXT(A2,' [$-130000][DBNum1]m月d日')我们可以分解为两大部分:1)计算年份:MID(' 甲乙丙丁戊己庚辛壬癸',MOD(TEXT(A2,'[$-130000]e')-4,10) 1,1)&MID('子丑寅卯辰巳午未申酉 戌亥',MOD(TEXT(A2,'[$-130000]e')-4,12) 1,1)&'年',这里加了MID()文本提取函数来获取天干地支。2)计算月日:TEXT(A2,' [$-130000][DBNum1]m月d日'),这里增加了参数[DBNum1],表示数值以“一、而二、三......”中文格式显示。两者组合一起的就是C列结果。完美版作为中国人,我们知道“一月”不叫“一月”,叫“正月”;“十二月”不叫“十二月”,叫“腊月”;同样每月前10天,是初一、初二......20日开始是廿、廿一......30日是卅等等。
1. 农历每个月初一显示为相应的月份,比如六月初一,则显示为六月,符合一般日历上显示农历的习惯。
2. 农历十号、二十号、及三十号分别显示为初十、二十、三十,二十一至二十九仍显示为廿一、廿二等,三十一也是卅一,修改了其他回答中“初一日”,“十五日”这样的显示方式,更符合习惯。
=IF(TEXT(A1,"[$-130000]d")="1",
* 如果A1格农历日期为1号,则通过下述判断显示为农历月份。"[$-130000]”是用于换算农历,后缀d表示换算出农历日期,下一行中的后缀m则是表示农历月份。
IF(TEXT(A1," [$-130000]m")*1-1=12,"腊",
* 农历十二月显示为腊月,其中[$-130000]m")*1减去1是因为2020年为农历闰4月,不减去1的话,当年农历12月会显示为十三月。
IF(TEXT(A1," [$-130000]m")*1=1," 正",
* 农历一月显示为正月,此处不减一,因为农历一月尚不涉及闰月。
IF(TEXT(A1," [$-130000]m")*1-1=10,"十",
IF(TEXT(A1," [$-130000]m")*1-1=11,"十一",
* 阿拉伯数字10及11转汉字会显示为“一十”和“一十一”这里10月和11月特别处理。
TEXT(TEXT(A1," [$-130000]m")-1,"[DBNum1]"
* 我是2020年8月开始做的日历,所以在解决闰四月这个问题的时候,采取了简单粗暴的办法,就是除了上述正月以外的月份统统都减去1来计算,而没有考虑2、3、4(闰)月份的问题。实际使用中,针对不同年份的农历闰月问题,可以在闰月前采用不减一的公式,即手工去掉上面所有的“-1”,而自闰月后采用减一的公式。因为Excel无法计算农历闰月,所以只能这样曲线救国了。
)))))
&"月",
* 到这里为止,解决了农历初一显示为月份的问题。从第二行开始,也可以单独用于农历月份。
下面开始是解决农历初一以外的日期问题,同时为了解决上面列的第二点改善,也做了简单粗暴的设计。
IF(TEXT(A1,"[$-130000]d")-9<1,"初"&TEXT(RIGHT(TEXT(A1," [$-130000]d"),1)*1,"[DBNum1]d"),
* 初一在之前的if里已经处理过了,所以这里简单的用日期-9<1就可以解决初二到初九的问题了。
IF(TEXT(A1,"[$-130000]d")="10","初十",
* 在上面没有才用日期-9≤1把初十解决掉,是因为在实践中发现那样子初十会显示为“初〇”,问题根源疑似是由TEXT(RIGHT(TEXT(A1," [$-130000]d"),1)*1,"[DBNum1]d")这段语句造成的。这里我又采取了简单粗暴的办法,就是另起一行,把初十单独拉出来做。
IF(TEXT(A1,"[$-130000]d")-19<1,"十"&TEXT(RIGHT(TEXT(A1," [$-130000]d"),1)*1,"[DBNum1]d"),
* 这里是解决十一到十九之间的问题,就直接显示十一到十九,逻辑为“十”加上个位的一到九,其中个位的一到九就是通过上述这段语句TEXT(RIGHT(TEXT(A1," [$-130000]d"),1)*1,"[DBNum1]d") 解决的
IF(TEXT(A1,"[$-130000]d")="20","二十",
* 这里是单独解决二十,理由同上面初十
IF(TEXT(A1,"[$-130000]d")-29<1,"廿"&TEXT(RIGHT(TEXT(A1," [$-130000]d"),1)*1,"[DBNum1]d"),
* 这里是解决廿一到廿九,逻辑同十一到十九,下面三十和卅一逻辑基本同上。做完之后才发现阴历似乎并没有三十一号。。。。然而也懒得再去验证和修改了。
IF(TEXT(A1,"[$-130000]d")="30","三十",
IF(TEXT(A1,"[$-130000]d")-39<1,"卅"&TEXT(RIGHT(TEXT(A1," [$-130000]d"),1)*1,"[DBNum1]d"),
""))))))))