datedif函数实例1.docx
《datedif函数实例1.docx》由会员分享,可在线阅读,更多相关《datedif函数实例1.docx(18页珍藏版)》请在冰豆网上搜索。
datedif函数实例1
DATEDIF函数计算两个日期间的年数、月数或天数
(DATEDIF函数是EXCEL中的一个隐藏函数,在函数向导中是找不到的,可直接输入使用,用于计算年龄、工龄非常好)
语法:
DATEDIF(date1,date2,code)
date1:
起始日期
date2:
结束日期
code:
CODE
返回值
"Y"
这期间的完全年数
"M"
这期间的完全月数
"D"
这期间的完全天数
"MD"
起始日期与结束日期的同月间隔天数。
日期的月数和天数被忽略。
"YM"
起始日期与结束日期的间隔月数。
日期的年数和天数被忽略。
"YD"
起始日期与结束日期的同年间隔天数。
日期的年数被忽略。
例1:
计算两个日期间的年数、月数或天数
起始日期1980-6-14在A5,结束日期B52011-9-10在B5,在C5中输入公式=DATEDIF(A5,B5,"y")可计算出相隔年数,返回31。
例2:
计算一个人的年龄
某人的出生年月为1968-7-13,在C13单元格,今天是2012-4-23
计算年数,公式为=DATEDIF($C$13,TODAY(),"y"),返回43。
计算月数,公式为=DATEDIF($C$13,TODAY(),"ym"),返回9。
计算天数,公式为=DATEDIF($C$13,TODAY(),"md"),返回10。
这个人的年龄可用以下公式连接成文本:
="年龄是"&DATEDIF(C13,TODAY(),"y")&"岁"&DATEDIF(C13,TODAY(),"ym")&"个月零"&DATEDIF(C13,TODAY(),"md")&"天"
返回:
年龄是43岁9个月零10天。
在Excel2003中,日期函数DAYS360和DATEDIF的起始日期和结束日期两个参数,如果要在函数中直接输入,必须使用DATE(年,月,日)函数输入,不能以文本形式输入,否则出错。
例如,要用上述两个函数计算起始日期为1920年2月3日,结束日期为2012年3月13日之间的天数,可以这样输入“=days360(date(1920,2,3),date(2012,3,13))"或“=datedif(date(1920,2,3),date(2012,3,13),"d")" ,前者以每年360天进行计算(即按平均每月30天计算),后者按实际天数计算。
当然,如果上述两个日期函数引用的开始日期和结束日期两个参数可以通过引用单元格地址获得,则可以直接引用相应单元格的地址即可
DATEDIF函数实例:
计算总借款天数和还款剩余天数
上例我们将了利用excel的DATEDIF函数来自动追加工龄工资。
本例我们讲解利用DATEDIF函数来计算借款天数和还款剩余天数。
我们使用DATEDIF函数,根据借款日期与还款日期计算出总借款天数和还款剩余天数。
如图所示:
选中E2单元格,输入公式:
=DATEDIF(C2,D2,"D"),就求出了天人科技的总借款天数。
向下拖动,进行公式填充,即可快速计算出另外单位的借款天数。
选中F2单元格,输入公式:
=DATEDIF(TODAY(),D2,”D”),就求出了天人科技的还款剩余天数。
向下拖动,进行公式填充,即可快速计算出另外单位的还款剩余天数。
days360("2004-2-25","2004-3-2")=7,为什么会等于7呢而不等于6呢
days360按照一年360天的算法(每个月以30天计,一年共计12个月)
=DATEDIF("2004-2-25","2004-3-2","d")
或
="2004-3-2"-"2004-2-25"
DATEIF()是宏函数.可以方便地求相隔月\年\日.不过主要还是用在日以外的.
DATEDIF是Excel中的一个隐藏函数,在函数向导中是找不到的。
此函数最初是Lotus1-2-3里面的函数,微软为了使Excel与Lotus1-2-3兼容而采用了它,但不知为何没写入文字资料。
有人说是与知识产权有关。
它用于返回两个日期参数的差值。
其语法为:
=DATEDIF(Date1,Date2,Interval)
其中date1必须早于date2,否则返回#NUM!
参数Interval可以在"y"、"m"、"d"、"ym"、"yd"、"md"六个里面选。
前三个(y、m、d)当然表示要求返回两个日期相差的年、月、日数。
后三个可能需要较多解释:
"ym"表示忽略年份的差别,只计所差的月份(即视两日期在同一年)。
"yd"表示忽略年份的差别,只计所差的天数(即视两日期在同一年)。
"md"表示忽略年份和月份的差别,只计所差的天数(即视两日期为同年同月)。
要善于利用论坛的搜索功能。
有什么函数不太清楚的,可在论坛上搜索。
matsumi2004-3-2110:
11
=DATEDIF("2004-2-25","2004-3-2","d")是6天
="2004-3-2"-"2004-2-25"是6天
=days360("2004-2-25","2004-3-2")是7天
为什么结果不一样
示例
DATEDIF("2001/1/1","2003/1/1","Y") 等于 2,即时间段中有两个整年。
DATEDIF("2001/6/1","2002/8/15","D") 等于 440,即在 2001 年 6 月 1 日和 2002 年 8 月 15 日之间有 440 天。
DATEDIF("2001/6/1","2002/8/15","YD") 等于 75,即在 6 月 1 日与 8 月 15 日之间有 75 天,忽略日期中的年。
DATEDIF("2001/6/1","2002/8/15","MD") 等于 14,即开始日期 1 和结束日期 15 之间的差,忽略日期中的年和月
假设小日期输入在单元格A1,大日期在B1。
在C1输入
=B1-A1+1
或者
=DATEDIF(A1,B1,"d")+1
就是你要的。
可能的话,需要右键设置单元格格式为数字。
追问:
这样算出来会是什么
这不符合我的要求,再说要是润月的28天,怎么算,我要是自动会算,不要人工去算,如果这个时间列很多,上百个,时间也乱,你怎么去算
回答:
呵呵,我已经提醒过你了。
右键点C1,设置单元格格式,数字,常规。
其他事情你不用担心,Excel把数字1当做1900-01-01,今天是数字40384,即从1900年1月1日算起,过去40384天了。
农历VBA
如何使用VBA
1在EXCEL里工具栏上右击,选控件工具箱
2点里面的按钮,在工作表上添加
3右击新加的按钮,查看代码
按ALT+F11再插入模块
把下面的代码制复制到模块中,然后在B1中输入:
=calendar(A1)
假设日期在A1。
OptionExplicit
DimWeekName(7),MonthAdd(11),NongliData(120),TianGan(9),DiZhi(11),ShuXiang(11),DayName(30),MonName(12)
DimcurTime,curYear,curMonth,curDay,curWeekday
DimGongliStr,WeekdayStr,NongliStr,NongliDayStr
Dimi,m,n,k,isEnd,bit,TheDate,num1,num2
Dimyear,month,day,grid,grid_date
Functioncalendar(grid)
grid_date=grid
year=Mid(grid_date,1,4)
num1=InStr(grid_date,"-")
num2=InStr(6,grid_date,"-")
If(num2-num1)=3Then
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)
EndIf
'星期名
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&"月"
EndIf
If(curDay<10)Then
GongliStr=GongliStr&"0"&curDay&"日"
Else
GongliStr=GongliStr&curDay&"日"
EndIf
'生成当前公历星期==>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((curYearMod4)=0AndcurMonth>2)Then
TheDate=TheDate+1
EndIf
'计算农历天干、地支、月、日
isEnd=0
m=0
Do
If(NongliData(m)<4095)Then
k=11
Else
k=12
EndIf
n=k
Do
If(n<0)Then
ExitDo
EndIf
'获取NongliData(m)的第n个二进制位的值
bit=NongliData(m)
Fori=1TonStep1
bit=Int(bit/2)
Next
bit=bitMod2
If(TheDate<=29+bit)Then
isEnd=1
ExitDo
EndIf
TheDate=TheDate-29-bit
n=n-1
Loop
If(isEnd=1)Then
ExitDo
EndIf
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
EndIf
EndIf
'生成农历天干、地支、属相==>NongliStr
NongliStr="农历"&TianGan(((curYear-4)Mod60)Mod10)&DiZhi(((curYear-4)Mod60)Mod12)&"年"
NongliStr=NongliStr&"("&ShuXiang(((curYear-4)Mod60)Mod12)&""
'生成农历月、日==>NongliDayStr
If(curMonth<1)Then
NongliDayStr="闰"&MonName(-1*curMonth)
Else
NongliDayStr=MonName(curMonth)
EndIf
NongliDayStr=NongliDayStr&"月"
NongliDayStr=NongliDayStr&DayName(curDay)&")"
calendar=NongliStr&NongliDayStr
EndFunction
Excelnetworkdays函数不能用是怎么回事啊-
在“工具”菜单上,单击“加载宏”。
在“可用加载宏”列表中,选中“分析工具库”框,再单击“确定”。
就有了
以2009-4-23为例,100天后是2009-8-1,你想得到什么结果,100天后的日期2009-8-1还是100天后是1号?
假设日期放在A1
=A1+100 结果为日期2009-8-1
=DAY(A1+100)结果为1
顺便说一下,日期