有时候,我们需要从网站上或者服务器上下载数据,然后根据条件进行统计,特别是统计特定的时间。本文来源于chandoo.org,要求根据工作时间段统计工作时间外所接电话数。
示例数据如下图1所示。有两个表,一个是通话记录,记录了每次通话开始的时间;一个是办公时间,告诉每周七天的工作时段。
图1
现在想知道,在工作时段外共接了多少个电话?
我们先使用辅助列来解答。
在单元格C7中输入下面的公式:
=MEDIAN(INDEX(I7:I13,WEEKDAY(B7,2))+0,INDEX(J7:J13,WEEKDAY(B7,2))+0,MOD(B7,1))<>MOD(
将公式下拉至数据列末尾。
公式取了3个值,即该行所在日的工作开始时间、结束时间和通话时间,然后取其位于中间的值,再与通话时间比较,如果不相等,说明该通话时间处于工作时间之外,公式返回TRUE。
然后,统计TRUE值的个数,即在工作时间之处的电话数:
=COUNTIF(C7:C1172,"TRUE")
返回:693。
如果不使用辅助列,可以使用公式:
=SUMPRODUCT(1-COUNTIFS(H7:H13,TEXT(B7:B1172,"DDDD"),I7:I13,"<="&MOD(B7:B1172,1),J7:J13,">="&MOD(B7:B1172,1)))
如果使用表内部标记,假设电话记录表名为:calls.ans,办公时间表名为:working.hours.ans,那么可使用公式:
=SUMPRODUCT(1-COUNTIFS(working.hours.ans[日],TEXT(calls.ans[通话时间],"DDDD"),working.hours.ans[开始时间],"<="&MOD(calls.ans[通话时间],1), working.hours.ans[结束时间],">="&MOD(calls.ans[通话时间],1)))
示例工作簿可以在chandoo.org上下载,或者在完美Excel社群知识星球App中下载。