Excel2010日期函数的加减怎么做.doc

上传人:rrsccc 文档编号:9613438 上传时间:2021-03-11 格式:DOC 页数:9 大小:43.50KB
返回 下载 相关 举报
Excel2010日期函数的加减怎么做.doc_第1页
第1页 / 共9页
Excel2010日期函数的加减怎么做.doc_第2页
第2页 / 共9页
Excel2010日期函数的加减怎么做.doc_第3页
第3页 / 共9页
Excel2010日期函数的加减怎么做.doc_第4页
第4页 / 共9页
Excel2010日期函数的加减怎么做.doc_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《Excel2010日期函数的加减怎么做.doc》由会员分享,可在线阅读,更多相关《Excel2010日期函数的加减怎么做.doc(9页珍藏版)》请在三一文库上搜索。

1、Excel2010日期函数的加减怎么做篇一:Excel时间加减函数TMC Function TMC(time_text, minu) 时间格式:2012-1-11 16:28:14 Dim t2, t3, t4, y, m, d, zong_miao, miao1, miao2, shi, fen, miao, shi1, fen1, miao3 Dim t1, m1 Dim flag1 As Boolean Dim flag2 As Boolean t1 = time_text m1 = -minu flag1 = False flag2 = False If IsNumeric(m1) T

2、hen flag2 = True End If If IsDate(t1) Then flag1 = True End If If t1 = "" Or m1 = "" Or flag2 = False Or flag1 = False Then TMC = "" Exit Function End If y = Year(t1) m = Month(t1) d = Day(t1) shi = Hour(t1) fen = Minute(t1) miao = Second(t1) If shi = 0 Then shi = 24 En

3、d If zong_miao = shi * 3600 + fen * 60 + miao miao1 = m1 * 60 miao2 = zong_miao - miao1 shi1 = Int(miao2 / 3600) fen1 = Int(miao2 - shi1 * 3600) / 60) miao3 = miao2 - shi1 * 3600 - fen1 * 60 If shi1 >= 24 Thenn = Int(shi1 / 24) shi1 = shi1 - n * 24 d = d + n End If If m = 1 Or m = 3 Or m = 5 Or m

4、 = 7 Or m = 8 Or m = 10 Or m = 12 Then If d 31 Then m = m + Int(d / 31) d = d Mod 31 End If ElseIf m = 1 Or m = 3 Or m = 5 Or m = 7 Or m = 8 Or m = 10 Or m = 12 ThenIf d 30 Then m = m + Int(d / 31) d = d Mod 30 End If ElseIf m = 2 Then If y Mod 4 = 0 And y Mod 100 = 0 And y Mod 400 = 0 Then If d 29

5、Then m = m + Int(d / 31) d = d Mod 29 End If Else If d 28 Then m = m + Int(d / 31) d = d Mod 28 End If End If End If If m 12 Then y = y + Int(m / 12) m = m Mod 12 End If If Len(shi1) shi1 = "0" & shi1 End If If Len(fen1) fen1 = "0" & fen1 End If If Len(miao3) miao3 = &quo

6、t;0" & miao3End If If shi = 24 And shi1 <= 23 Then d = d - 1 If d <= 0 Then If m = 5 Or m = 7 Or m = 8 Or m = 10 Or m = 12 Then d = 30 m = m - 1 ElseIf m = 4 Or m = 2 Or m = 6 Or m = 8 Or m = 9 Or m = 11 Or m = 1 Thend = 31 m = m - 1 ElseIf m = 3 Then If y Mod 4 = 0 And y Mod 100 = 0

7、And y Mod 400 = 0 Then d = 29 m = m - 1 Else d = 28 m = m - 1 End If End If End If If m <= 0 Then m = 12 y = y - 1 End If End If If m m = "0" & m End If If d d = "0" & d End If t2 = y & "-" & m & "-" & d & " " t3 = shi1

8、 & ":" & fen1 & ":" & miao3 t4 = t2 & t3 TMC = t4 End Function篇二:Excel 日期常用函数 VBA日期的加减函数:DateAdd 函数 返回包含一个日期的 Variant (Date),这一日期还加上了一段时间间隔。 语法 DateAdd(interval, number, date) DateAdd 函数语法中有下列命名参数: 部分 描述 interval 必要。字符串表达式,是所要加上去的时间间隔。 number date 设置 必要。数值表达式,

9、是要加上的时间间隔的数目。其数值可以为正数(得到未来的日期),也可以为负数(得到过去的日期)。 必要。Variant (Date) 或表示日期的文字,这一日期还加上了时间间隔。 interval 参数具有以下设定值: 设置 yyyy 年 q m y d w ww h n 季 月 一年的日数 日 一周的日数 周 时 分钟 描述s 说明 秒 可以使用 DateAdd 函数对日期加上或减去指定的时间间隔。例如,可以用 DateAdd 来计算距今天为三十天的日期;或者计算距现在为 45 分钟的时间。 为了对 date 加上“日”,可以使用“一年的日数” (“y”),“日” (”d”) 或“一周的日数”

10、 (”w”)。 DateAdd 函数将不返回有效日期。在以下实例中将 1 月31 日加上一个月: DateAdd(m, 1, 31-Jan-95) 上例中,DateAdd 返回 1995 年 2 月 28 日,而不是 1995 年 2 月 31 日。如果 date 是 1996 年 1 月 31 日,则由于 1996 年是闰年,返回值是 1996 年 2 月 29 日。 如果计算的日期超前 100 年(减去的年度超过 date 中的年份),就会导致错误发生。 如果 number 不是一个 Long 值,则在计算时取最接近的整数值来计算。 注意DateAdd 返回值的格式由 Control Pa

11、nel设置决定,而不是由传递到date 参数的格式决定。 DateAdd 函数示例 本示例先取得一个日期,再用 DateAdd 函数显示未来数月后的日期。 Dim FirstDate As Date 声明变量。 Dim IntervalType As String Dim Number As Integer Dim Msg IntervalType = "m" "m"指定以“月份”作为间隔。 FirstDate = InputBox("Enter a date") Number = InputBox("Enter numbe

12、r of months to add") Msg = "New date: " & DateAdd(IntervalType, Number, FirstDate) MsgBox Msg DATEDIF 计算两个日期之间的天数、月数或年数。提供此函数是为了与 Lotus 1-2-3 兼容。 语法 DATEDIF(start_date,end_date,unit) Start_date 为一个日期,它代表时间段内的第一个日期或起始日期。日期有多种输入方法:带引号的文本串(例如 "2001/1/30")、系列数(例如,如果使用 1900 日

13、期系统则 36921 代表 2001 年 1 月 30 日)或其他公式或函数的结果(例如,DATEVALUE("2001/1/30"))。有关日期系列数的详细信息,请参阅 NOW。 End_date 为一个日期,它代表时间段内的最后一个日期或结束日期。 Unit 为所需信息的返回类型。 Unit 返回 "Y" 时间段中的整年数。 "M" 时间段中的整月数。 "D" 时间段中的天数。 "MD" start_date 与 end_date 日期中天数的差。忽略日期中的月和年。 "YM&qu

14、ot; start_date 与 end_date 日期中月数的差。忽略日期中的日和年。 "YD" start_date 与 end_date 日期中天数的差。忽略日期中的年。 说明 Microsoft Excel 按顺序的系列数保存日期,这样就可以对其进行计算。如果工作簿使用 1900 日期系统,则 Excel 会将 1900 年 1 月 1 日保存为系列数 1。而如果工作簿使用 1904 日期系统,则 Excel 会将 1904 年 1 月 1 日保存为系列数 0,(而将 1904 年 1 月 2 日保存为系列数 1)。例如,在 1900 日期系统中 Excel 将 1

15、998 年 1 月 1 日保存为系列数 35796,因为该日期距离 1900 年 1 月 1 日为 35795 天。请查阅 Microsoft Excel 如何存储日期和时间。 Excel for Windows 和 Excel for Macintosh 使用不同的默认日期系统。有关详细信息,请参阅 NOW。 示例 DATEDIF("2001/1/1","2003/1/1","Y") 等于 2,即时间段中有两个整年。 DATEDIF("2001/6/1","2002/8/15","D

16、") 等于 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 之间的差,忽略日期中 的年和月。 纵观Excel日期函数对日期的运算规则得出

17、以下理解(比如Edate、Datedif等都是遵循这个规则的):先理解“月末”指某月的最后一天再理解“整月”即不是按30天也不是 按29天等来算,这个是一个变动的概念。 由m月d日至m+1月d日,若m+1月没有d日,则取m+1月的“月末”算一个“整月”。反之,倒推 回来,由m月d日至m-1月d日,若m-1月没有d日,则取m-1月的月末算一个“整月” 例子:2006-1-2831日,往后推1个月得到的都是2-28,其中2006-1-28遵循了m+1=2月d=28日的规则,而2006-1-2931则遵循了“取月末”的规则,即因为2006年的m+1=2月没有29、30、31日,则取其月末。用=Eda

18、te(star_date,1)验证上述规则;用Datedif(star_date,"2006-2-28","m")同样能验证这个规则。即从2006-1-2831日至2006-2-28的Datedif(?,"m")都算1个“整月”。 Private Function getFirstDayOfMonth(ByVal D As Date) As Date getFirstDayOfMonth = CDate(Year(D) & "-" & Month(D) & "-1") E

19、nd Function 获取给定日期的当月最后一天 Private Function getLastDayOfMonth(ByVal D As Date) As Date Dim dteFirstDayOfNextMonth As Date dteFirstDayOfNextMonth = DateAdd("m", 1, getFirstDayOfMonth(D) getLastDayOfMonth = DateAdd("d", -1, dteFirstDayOfNextMonth) End Function 获取给定日期的当年第一天Private Fu

20、nction getFirstDayOfYear(ByVal D As Date) As Date getFirstDayOfYear = CDate(Year(D) & "-1-1") End Function 获取给定日期的当年最后一天 Private Function getLastDayOfYear(ByVal D As Date) As Date getLastDayOfYear = CDate(Year(D) & "-12-31") 本月第一天星期几 A22.Value = Weekday(A21) b = A22.Value

21、 Select Case b Case vbSunday A23 = Year(B19) & "年" & Month(B19) & "月1日是星期日”Case vbMonday A23 = Year(B19) & "年" & Month(B19) & "月1日是星期一”Case vbTuesday A23 = Year(B19) & "年" & Month(B19) & "月1日是星期二”Case vbWednesday A23 =

22、Year(B19) & "年" & Month(B19) & "月1日是星期三”Case vbThursday A23 = Year(B19) & "年" & Month(B19) & "月1日是星期四”Case vbFriday A23 = Year(B19) & "年" & Month(B19) & "月1日是星期五”Case vbSaturday A23 = Year(B19) & "年" &

23、 Month(B19) & "月1日是星期六”End Select 得到本月第一周周一的日期 Select Case b Case vbSunday B21.Value = DateAdd("d", 1, A21) Case Else B21.Value = DateAdd("d", 9 - b, A21) 使用 DatePart("ww", Date() 来返回周 DatePart 函数 返回一个包含已知日期的指定时间部分的 Variant (Integer)。 语法 DatePart(interval, date

24、,firstdayofweek, firstweekofyear) DatePart 函数语法中有下列命名参数:篇三:各种日期格式的转换公式 excel常用函数公式大全:各种日期格式的转换公式 (2012-11-15 11:18:01) 转载 标签: 分类: 精品转载 杂谈 不少朋友提问关于excel中各种功能的实现方法、excel函数的编写以及应用方法,经过寻修网/多方收集,现在将常用的excel常用函数公式逐一整理出来,供广大网友们借鉴,如果还需要实现什么功能,也可在寻修网上提问,我们一定及时补充。 各种日期格式的转换公式 将 “01/12/2005” 转换成“20050112”格式 RI

25、GHT(A1,4)&MID(A1,4,2)&LEFT(A1,2) YEAR($A2)&TEXT(MONTH($A2),"00")&TEXT(DAY($A2),"00") 该公式不用设置数据有效性,但要设置储存格格式。 也可以用下列两方法: 1、先转换成文本, 然后再用字符处理函数。 2、数据-分列 日期-MDY 将“2005年9月”转换成“200509”格式 先用公式:=text(a1,"yyyymm")+0 然后将单元格格式为常规。 将“2005-8-6”格式转换为“20050806”格式 用公式:=

26、TEXT(A1,"YYYYMMDD") 反之,将20050806转为日期2005-8-6格式,可用公式: =DATE(LEFT(A1,4),MID(A1,5,2),RIGHT(A1,2) 另四种公式: text(a1,"0000-00-00") 显示:2005-08-06-TEXT(A1,"#-00-00"),把单元格设置为日期格式 显示:2005-8-6 TEXT(20050806,"0000-00-00")*1,单元格设置日期型 显示:2005-8-6 VALUE(LEFT(A1,4)&"-&

27、quot;&MID(A1,5,2)&"-"&RIGHT(A1,2) 显示:2005-8-6 将“20060501”转换为“2006-05-01”格式 =DATE(LEFT(A2,4),MID(A2,5,2),RIGHT(A2,2) 将“199306”转换为“1993-6” 公式1:=LEFT(A3,4)&"-"&RIGHT(A3,2)*1 公式2:=-TEXT(A3*100+1,"#-00-00") 公式2需要设置单元格格式,自定义:e-m 公式3:=TEXT(TEXT(A3&"

28、;01","0000-00-00"),"e-m") 把198405转换成1984.05 一、查找1984,替换1984. 二、如果全部是年月的话,寻修网/建议, 1、采取辅助mid(xxxxxx,1,4) & "." & right(xxxxxx,2) 2、选中这列,用数据中的分列。然后? 三、单元格格式数字自定义,类型下面输入:#"."# 将文本“2004.01.02” 转换为日期格式:2004-1-2 =DATE(MID(A1,1,4),MID(A1,6,2),MID(A1,9,2)

29、将2005-8-6转换为2005年8月6日格式 =TEXT(A1,"yyyy""年""m""月""d""日""") 象22怎样转换成22日?转成当年当月的日子公式为:=date(year(now(),month(now(),22) 将“2006年5月”转换成“2006年05月” 公式为:=TEXT(A8,"yyyy""年""mm""月""") 也可以这样处理

30、:选中单元格,设置单元格公式数字自定义,将 yyyy“年”m“月”改为:yyyy“年”mm“月”,即可。但这方法打印出来显示为:2006/5/ 将“1968年6月12日”转换为“1968/6/12”格式 =YEAR(A1)&"/"&MONTH(A1)&"/"&DAY(A1) 显示:1968/6/12 =TEXT(A1,"yyyy/mm/dd") 显示:1968/06/12 将“1968年6月12日”转换为“1968-6-12”格式 =YEAR(A1)&"-"&MONT

31、H(A1)&"-"&DAY(A1) 显示:1968-6-12 =TEXT(A1,"yyyy-mm-dd") 显示:1968-06-12 将1993-12-28的日期格式转换成1993年12月 =CONCATENATE(YEAR(A1),"年",MONTH(A1),"月") =YEAR(A1)&"年"&MONTH(A1)&"月" 也可以自定义格式 $-404e"年"m"月" 将“1978-5-2”包

32、含年月日的日期转换成“197805”只有年月的格式 year(A1)&text(month(A1),"00") 要将“99.08.15” 格式转换成“1999.08.15”如何做 选中列,数据菜单中选分列,分列过程中“格式”选“日期YMD”,结束。 要保持2005/8/6格式当输入2005/8/6后系统自动变成2005-8-6,要保持2005/8/6格式,可以使用强制文本(前面加号)或使用公式=TEXT(A1,"YYYY/MM/DD")。也可以用另一种公式: =IF(ISERROR(TEXT(A1,"yyyy/mm/dd"),

33、TEXT(A1,"0000!/00!/00"),TEXT(A1,"yyyy/mm/dd") 将“二三年十二月二十五日”转为“2003-12-25”格式, 1、可以用数组公式将中文日期转化为日期系列数 =14610+MATCH(SUBSTITUTE(A3,"元","一 "),TEXT(ROW($14611:$55153),"DBNum1yyyy年m月d日"),0) 该公式速度较慢。 2、改进后的公式,速度要快的多: =DATE(1899+MATCH(LEFT(A7,4),TEXT(ROW($190

34、0:$2100),"DBNum10000"),0),MONTH(MATCH(SUBSTITUTE(MID(A7,6,7),"元","一 "),TEXT(ROW($1:$366),"DBNum1m月d日 "),0),DAY(MATCH(SUBSTITUTE(MID(A7,6,7),"元","一 "),TEXT(ROW($1:$366),"DBNum1m月d日"),0) 要设置为1900年的日期格式。 日期格式转换 如A列是月份数为8,B列是日期数为18,如何

35、在C列显示“8月18日” =A1&"月"&B1&"日" 反之,要将C列的“8月18日” 直接分别到D、E列,显示月份和日期, 月数份=LEFT(C5,FIND("月",C5)-1) 日期数=MID(C5,FIND("月",C5)+1,FIND("日",C5)-FIND("月",C5)-1) 也可分别用公式: =month(-c5) =day(-c5) 日期格式转换问题输入的日期是:04-07-26. 与另一格的"001"合并,合并出来是:040726001. =TEXT(A1,"YYMMDD")&"001" 要想自动取得“编制日期:XXXX年X月X日” 可在该单元格输入 ="编制日期:"&TEXT(TODAY(),"yyyy年m月d日") excel中如何将文本格式数字转为数字格式 ? ? ? ? ? ? ? ?| 浏览:16656 | 更新:2013-03-01 10:48 | 标签:excel 1 ?2 ?3 ?4 ?5Excel2010日期函数的加减怎么做

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

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1