我无法在几分钟内获得两个日期之间的详细或具体差异。让我们说:
Date Start : 24/7/2015 12:38:00 PM
Date End : 27/7/2015 12:12:00 PM
我的代码确实给出了两个日期之间的差异,但实际上并不具体,这意味着它给出了两个日期之间3天的差异,但不仅仅是我想要的(让我们说它们的区别是68小时30分56秒)。那么,我该怎么做呢?
这是我的代码:
Date1 = DateValue(CurrentSheet.Cells(PRow, "U").Value)
Date2 = DateValue(CurrentSheet.Cells(PRow, "S").Value)
FRow = CurrentSheet.UsedRange.Cells(1).Row
lrow = CurrentSheet.UsedRange.Rows(CurrentSheet.UsedRange.Rows.count).Row
For PRow = lrow To 2 Step -1
CurrentSheet.Cells(PRow, "AD").Value = DateDiff("d", Date2, Date1) 'produce days
CurrentSheet.Cells(PRow, "AE").Value = DateDiff("h", Date2, Date1) 'produce hours
CurrentSheet.Cells(PRow, "AF").Value = DateDiff("n", Date2, Date1) 'produce minutes
Next PRow
目前得到的答案是:
3天,
72小时(3小时24小时),
1440分钟(24小时60分钟)。
答案 0 :(得分:1)
原因是您使用的函数DateValue
仅将值转换为日期(时间部分已删除)。
所以,那些日期:
Date Start : 24/7/2015 12:38:00 PM
Date End : 27/7/2015 12:12:00 PM
用DateValue
函数处理后,变为:
Date Start : 24/7/2015 00:00:00
Date End : 27/7/2015 00:00:00
[编辑]
您需要将它们转换为Date
类型。
您可以使用VBA内置函数CDate
来执行此操作:
Date1 = CDate(CurrentSheet.Cells(PRow, "U").Value)
Date2 = CDate(CurrentSheet.Cells(PRow, "S").Value)
答案 1 :(得分:0)
在内部,日期存储为自1月1日至1900年(或1902年,并不重要)的天数。这意味着1 day = 1
,这也意味着1 hour = 1/24
因此,如果我正确理解您的问题,为了获得date2和date1之间的天,小时,分钟的差异,您可以使用
daysdiff = DateDiff("d", Date2, Date1)
hoursdiff = INT((Date2-date1-Daysdiff)/24)
'or
hoursdiff = DateDiff("h", Date2-daysdiff, Date1)
minutesdiff = Datediff("n", Date2-daysdiff-hoursdiff/24, Date1)
对不起,没有经过测试,但你明白了。
编辑:您还应该在更改中包含@mielk备注。
答案 2 :(得分:-1)
实际上,它很简单!我从没想过这样可以像我想的那样产生答案! :)
Dim FROW As Long Dim lrow As Long Dim PRow As Long
Range("AD1").Value = "Hours Differences"
Dim CurrentSheet As Worksheet
Set CurrentSheet = Excel.ActiveSheet
FRow = CurrentSheet.UsedRange.Cells(1).Row
lrow = CurrentSheet.UsedRange.Rows(CurrentSheet.UsedRange.Rows.count).Row
For PRow = lrow To 2 Step -1
CurrentSheet.Cells(PRow, "AD").Value = (CurrentSheet.Cells(PRow, "U").Value - CurrentSheet.Cells(PRow, "S").Value) * 24
Next PRow
它将产生71.5666666666511。我被DATE格式分心了。谢谢大家的帮助! :d