我有一份报告,我应该在发布日期时间和完成日期时间之间收集当天不同时段的数据。例如IssueDateTime = 12/19/2016 10:00 AM和CompletedDateTime = 12/19/2016 3:00 PM我希望该公式能够在上午10:00,上午11:00,中午12:00,下午1:00返回,下午2:00,下午3:00。不知道这是否可能,但任何见解将不胜感激。
答案 0 :(得分:0)
此公式将返回小时数组:
=TEXT(ROW(INDIRECT(HOUR(IssueDateTime) & ":" & HOUR(CompletedDateTime)))/24,"hh:mm AM/PM")
对于您的示例,公式返回:
{"10:00 AM";"11:00 AM";"12:00 PM";"01:00 PM";"02:00 PM";"03:00 PM"}
但是当输入单个单元格时,您将只看到第一个元素。
您可以通过输入公式作为数组或使用INDEX
函数来显示完整结果。
如果您不熟悉Excel中的数组,建议您阅读Excel和MSDN上的帮助主题,另请参阅Chip Pearsons Introduction to Array Formulas
这是一个例子。数组公式已输入B4:B17,并使用条件格式将#N/A
结果显示为空白。
答案 1 :(得分:0)
以下是如何使用VBA / Access执行相同的操作:
cdate(DatePart("h",Now())& ":00")
这将在下午1:00:00返回当前时间(下午1:12)
要获得一小时,请使用:
DatePart("h",Now())
这是一个简单的函数,它返回两个不同时间之间的所有小时块:
Public Function ShowHourBlocks(StartTime As Date, EndTime As Date) As String
Dim StartBlock As Date
Dim EndBlock As Date
Dim Answer As String
StartBlock = CDate(DatePart("h", StartTime) & ":00")
EndBlock = CDate(DatePart("h", EndTime) & ":00")
Do While StartBlock <= EndBlock
Answer = Answer + Format(StartBlock, "h:mm AMPM") & " "
StartBlock = DateAdd("h", 1, StartBlock)
Loop
ShowHourBlocks = Answer
End Function
以下是在即时窗口中运行时返回的内容:
?ShowHourBlocks(now(), DateAdd("h",4,Now()))
1:00 PM 2:00 PM 3:00 PM 4:00 PM 5:00 PM