我有两列的电子表格。A包含入睡时间(我上床睡觉的时间),B包含唤醒时间(我醒来的时间)。我该如何计算平均上床时间和起床时间?
例如;
A = 11:45 pm、11:00pm、12:15am、12:45am、12:00am
B = 6:00 am、5:00am、5:30am、7:00am、6:00am
另外,如何计算行之间的总睡眠时间?即使我转换为24小时格式,Excel中的典型平均公式也会被丢弃。任何想法将不胜感激。
我有两列的电子表格。A包含入睡时间(我上床睡觉的时间),B包含唤醒时间(我醒来的时间)。我该如何计算平均上床时间和起床时间?
例如;
A = 11:45 pm、11:00pm、12:15am、12:45am、12:00am
B = 6:00 am、5:00am、5:30am、7:00am、6:00am
另外,如何计算行之间的总睡眠时间?即使我转换为24小时格式,Excel中的典型平均公式也会被丢弃。任何想法将不胜感激。
Answers:
如果在日期中加上时间,则可以像普通数字一样简单地减去和求平均值。但是,数字格式对于正确显示数据很重要。
例如:
在小区中的公式C2是= B2-A2和在细胞的平均值公式A7是= AVERAGE(A2:A6)
C列的自定义数字格式:使用h“ hrs” mm“ min”,而AB列使用m / d / yyyy h:mm AM / PM。单元格A7和B7使用标准的时间数字格式。
=AVERAGE(A2:A6)
可能会给您所示示例中的有效结果,但是如果不存在第6行怎么办=AVERAGE(A2:A5)
?您得到了什么?对这些值进行平均会带来问题,因为您将平均值包括在内。
要准确地执行此操作而不必添加日期:
正如@ barry-houdini在评论中提到的那样,要使“小时睡眠”正常工作,您将需要使用MOD
自下午2:00/24:00开始“回绕”的时间,这在电子表格世界中等于1。要做到这一点:
C3: =mod(B3-A3,1)
一旦有了持续时间,平均值就很简单:
C2: =AVERAGE(C3:C7)
对于实际时间的平均值,ARRAYFORMULA
如果有可能需要在任一列中的时间“绕开”午夜(例如,一侧可能有一些值,而另一侧可能有一些值),则需要使用实际时间的平均值。为此,我们有:
A2: =ARRAYFORMULA(AVERAGE(if(A3:A7>0.5,A3:A7,A3:A7+1)))
上面的公式简单地获取范围内的每个值,检查它是否超过0.5(正午),如果不加 1 ,则将其移动到第二天,然后对所有值取平均值。0.5假设您在中午之前不上床睡觉,但是如果您的日程安排不寻常,您显然可以更改时间。
对于平均的唤醒时间,大多数人可能不需要上述时间,因为通常您会在一天的午夜和第二天的午夜之间醒来,因此您的任何价值观都无需“四处走动”。说:
B2: =AVERAGE(B3:B7)
要使用日期准确地做到这一点:
添加日期实际上仅掩盖了计算平均值的问题,因为它同时使用日期和时间作为平均值。它在计算特定日期的时间,该时间是所有日期和时间值的平均值。这导致两个问题:
您真正想要平均的是TIMEVALUES
,因此我们只需将其添加到上面公式中的每个范围即可:
A2: =ARRAYFORMULA(AVERAGE(if(TIMEVALUE(A3:A7)>0.5,TIMEVALUE(A3:A7),TIMEVALUE(A3:A7)+1)))
B2: =ARRAYFORMULA(AVERAGE(TIMEVALUE(B3:B7)))
C2不需要更改,因为它仍然只处理持续时间而不是日期。