Exceldate/时间差异

我想从指定的date和时间开始计算当前的时间。

如果指定的数据是: 19/01/2013 16:44:00
现在的时间是: 19/01/2013 16:45:00

区别是0年0个月0天0小时1分0秒

这可以简单地通过采取当前时间,减去以前的时间和格式来完成,但这是很难收敛的数据,所以我想要做的是把每个date/时间段分成它自己的单元格

假设单元格A1具有前一时间,单元格A2具有当前时间

细胞a5槽f5将包含0年0个月0天0小时1分0秒

关于这个问题的第二个注释是否可以强制=NOW()通过VBA每隔x秒更新一次没有交互?

您不能使用YEAR函数来获得年度差异,因为从2012年12月31日到2013年1月1日之间只有一天的时间将会有1年…..

….类似的,你可以有MONTH和DAY的问题(例如MONTH总是返回1到12之间的数字,而在这种情况下,你只能期望0到11之间的数字)

正如贾斯汀所build议的那样,先尝试DATEDIF ,然后再尝试HOURMINUTESECOND

假设在A2中的开始date/时间和在B2中的结束date/时间,分别尝试这些公式为年,月,日,小时,分钟和秒

=DATEDIF(A2,B2-(MOD(A2,1)>MOD(B2,1)),"y")

=DATEDIF(A2,B2-(MOD(A2,1)>MOD(B2,1)),"ym")

=DATEDIF(A2,B2-(MOD(A2,1)>MOD(B2,1)),"md")

=HOUR(B2-A2)

=MINUTE(B2-A2)

=SECOND(B2-A2)

将所有单元格格式化为一般

由于月份/年份不定,您可能会得到一些差异……

使用A5 = Year(A1)-Year(A2)

运用

Year(...) Month(...) Day(...) Hour(...) Minute(...) Second(...)

有关创build基于计时器的自更新工作表的更多详细信息,请查看这两篇 文章,并设置一个计时器以执行Worksheet.Calculate方法。

 Private Sub CommandButton1_Click() DoDateA End Sub Sub DoDateA() Dim D1 As Date, D2 As Date, DC As Date, DS As Date Dim CA: CA = Array("", "yyyy", "m", "d", "h", "n", "s", "s") Dim Va%(7), Da(7) As Date, Ci% D1 = Now + Rnd() * 420 ' vary the * factors for range of dates D2 = Now + Rnd() * 156 If D1 > D2 Then [b4] = "Larger" Else [b4] = " smaller" DS = D1 D1 = D2 D2 = DS End If [d4] = D1 [e4] = D2 DC = D2 For Ci = 1 To 6 Va(Ci) = DateDiff(CA(Ci), DC, D1) DC = DateAdd(CA(Ci), Va(Ci), DC) Va(Ci + 1) = DateDiff(CA(Ci + 1), DC, D1) If Va(Ci + 1) < 0 Then ' added too much Va(Ci) = Va(Ci) - 1 DC = DateAdd(CA(Ci), -1, DC) Cells(9, Ci + 3) = Va(Ci + 1) Cells(8, Ci + 3) = Format(DC, "yyyy:mm:dd hh:mm:ss") End If Da(Ci) = DC Cells(5, Ci + 3) = CA(Ci) Cells(6, Ci + 3) = Va(Ci) Cells(7, Ci + 3) = Format(Da(Ci), "yyyy:mm:dd hh:mm:ss") Cells(10, Ci + 3) = DateDiff(CA(Ci), D2, D1) Next Ci End Sub