您的位置:百味书屋 > 范文大全 > 经典范文 > Excel2010日期函数的加减怎么做 正文

Excel2010日期函数的加减怎么做

2016-11-25 09:40:30 来源网站:百味书屋

篇一: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) Then

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

End 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 Then

n = Int(shi1 / 24)

shi1 = shi1 - n * 24

d = d + n

End If

If m = 1 Or m = 3 Or m = 5 Or m = 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 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) < 2 Then

shi1 = "0" & shi1

End If

If Len(fen1) < 2 Then

fen1 = "0" & fen1

End If

If Len(miao3) < 2 Then

miao3 = "0" & miao3

End 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 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 < 10 Then

m = "0" & m

End If

If d < 10 Then

d = "0" & d

End If

t2 = y & "-" & m & "-" & d & " "

t3 = shi1 & ":" & fen1 & ":" & miao3

t4 = t2 & t3

TMC = t4

End Function

篇二:Excel 日期常用函数

VBA日期的加减函数:DateAdd 函数

返回包含一个日期的 Variant (Date),这一日期还加上了一段时间间隔。 语法

DateAdd(interval, number, date) DateAdd 函数语法中有下列命名参数: 部分

描述

interval 必要。字符串表达式,是所要加上去的时间间隔。 number date 设置

必要。数值表达式,是要加上的时间间隔的数目。其数值可以为正数(得到未来的日期),也可以为负数(得到过去的日期)。 必要。Variant (Date) 或表示日期的文字,这一日期还加上了时间间隔。

interval 参数具有以下设定值: 设置 yyyy 年 q m y d w ww h n

季 月

一年的日数 日

一周的日数 周 时 分钟

描述

s 说明

可以使用 DateAdd 函数对日期加上或减去指定的时间间隔。例如,可以用 DateAdd 来计算距今天为三十天的日期;或者计算距现在为 45 分钟的时间。 为了对 date 加上“日”,可以使用“一年的日数” (“y”),“日” (”d”) 或“一周的日数” (”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 Panel设置决定,而不是由传递到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 number 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 日期系统则 36921 代表 2001 年 1 月 30 日)或其他公式或函数的结果(例如,DATEVALUE("2001/1/30"))。有关日期系列数的详细信息,请参阅 NOW。

End_date 为一个日期,它代表时间段内的最后一个日期或结束日期。

Unit 为所需信息的返回类型。

Unit 返回

"Y" 时间段中的整年数。 "M" 时间段中的整月数。 "D" 时间段中的天数。

"MD" start_date 与 end_date 日期中天数的差。忽略日期中的月和年。 "YM" 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 将 1998 年 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") 等于 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日期函数对日期的运算规则得出以下理解(比如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-28~31日,往后推1个月得到的都是2-28,其中2006-1-28遵循了m+1=2月d=28日的规则,而2006-1-29~31则遵循了“取月末”的规则,即因为2006年的m+1=2月没有29、30、31日,则取其月末。用=Edate(star_date,1)验证上述规则;用Datedif(star_date,"2006-2-28","m")同样能验证这个规则。即从2006-1-28~31日至2006-2-28的Datedif(??,"m")——都算1个“整月”。 Private Function getFirstDayOfMonth(ByVal D As Date) As Date getFirstDayOfMonth = CDate(Year(D) & "-" & Month(D) & "-1") End 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 Function 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 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] = 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]) & "年" & 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[,firstdayofweek[, firstweekofyear]]) DatePart 函数语法中有下列命名参数:

篇三:各种日期格式的转换公式

excel常用函数公式大全:各种日期格式的转换公式 (2012-11-15 11:18:01)

转载▼

标签: 分类: 精品转载

杂谈

不少朋友提问关于excel中各种功能的实现方法、excel函数的编写以及应用方法,经过寻修网/多方收集,现在将常用的excel常用函数公式逐一整理出来,供广大网友们借鉴,如果还需要实现什么功能,也可在寻修网上提问,我们一定及时补充。

各种日期格式的转换公式

将 “01/12/2005” 转换成“20050112”格式

=RIGHT(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”格式

用公式:=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)&"-"&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&"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))

将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""月"";@")

也可以这样处理:选中单元格,设置单元格公式-数字-自定义,将

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)&"-"&MONTH(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)&"月"

也可以自定义格式 [$-404]e"年"m"月"

将“1978-5-2”包含年月日的日期转换成“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")),TEXT(A1,"0000!/00!/00"),TEXT(A1,"yyyy/mm/dd"))

将“二○○三年十二月二十五日”转为“2003-12-25”格式,

1、可以用数组公式将中文日期转化为日期系列数

{=14610+MATCH(SUBSTITUTE(A3,"元","一

"),TEXT(ROW($14611:$55153),"[DBNum1]yyyy年m月d日"),0)}

该公式速度较慢。

2、改进后的公式,速度要快的多:

{=DATE(1899+MATCH(LEFT(A7,4),TEXT(ROW($1900:$2100),"[DBNum1]0000"),0),MONTH(MATCH(SUBSTITUTE(MID(A7,6,7),"元","一

"),TEXT(ROW($1:$366),"[DBNum1]m月d日

"),0)),DAY(MATCH(SUBSTITUTE(MID(A7,6,7),"元","一

"),TEXT(ROW($1:$366),"[DBNum1]m月d日"),0)))}

要设置为1900年的日期格式。

日期格式转换

如A列是月份数为8,B列是日期数为18,如何在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

?

5


Excel2010日期函数的加减怎么做》出自:百味书屋
链接地址:http://www.850500.com/news/31103.html
转载请保留,谢谢!
查看更多相关内容>>Excel2010日期函数的加减怎么做
相关文章
  • Excel2010日期函数的加减怎么

    Excel时间加减函数TMCFunctionTMC(time_text,minu)时间格式:2012-1-1116:28:14Dimt2,t3,t4,y,m,d,zong_miao,miao1,miao2,shi,fen,miao,shi1,fen1,miao3Dimt1,m1Dimflag1AsB

推荐范文