datedif函数实例1.docx

上传人:b****6 文档编号:6038183 上传时间:2023-01-03 格式:DOCX 页数:18 大小:57.11KB
下载 相关 举报
datedif函数实例1.docx_第1页
第1页 / 共18页
datedif函数实例1.docx_第2页
第2页 / 共18页
datedif函数实例1.docx_第3页
第3页 / 共18页
datedif函数实例1.docx_第4页
第4页 / 共18页
datedif函数实例1.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

datedif函数实例1.docx

《datedif函数实例1.docx》由会员分享,可在线阅读,更多相关《datedif函数实例1.docx(18页珍藏版)》请在冰豆网上搜索。

datedif函数实例1.docx

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

顺便说一下,日期

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1