Excel:以30分钟为间隔计算总计划,并考虑到一天

时间:2018-08-29 20:48:17

标签: excel excel-formula

在评估一天中的特定时间可以增加多少个座席而又不超过呼叫中心的座位数时,我试图确定一周中的每个半小时间隔计划安排多少个座席。

使用=SUMPRODUCT(((A$2:A$1000<=D2)+(B$2:B$1000>D2)+(A$2:A$1000>B$2:B$1000)=2)+0)公式,我能够确定每个时间间隔内有多少总座席工作,但这并没有考虑星期几。

我目前以这种方式设置电子表格:

https://i.stack.imgur.com/mHER.png

K是班次的开始时间,L是班次的结束时间,M到S从另一个工作表中提取数据,如果座席在一周中的这一天工作,则显示1,否则显示0,然后U列出所有时间间隔。在该示例中,它被切除,但列根据需要继续向下。 U升至49,而我刚使用的范围是2到500,这是因为我们目前没有那么多班次,而我现在有空位。

在谷歌搜索后,我尝试了=SUMPRODUCT(--(M2:M500="1"),(((K$2:K$1000<=U2)+(L$2:L$1000>U2)+(K$2:K$1000>L$2:L$1000)=2)+0)),但它只返回#VALUE!所以我不确定我在做什么错。

关于如何进行这项工作的任何建议?请让我知道更多信息是否有用。谢谢。

1 个答案:

答案 0 :(得分:0)

=sumproduct(($K$2:$K$1000<=U2)*($L$2:$L$1000>=U2))

这将计算开始时间小于或等于U2中的时间并且结束时间大于或等于U2中的出现次数。它将检查从第2行到第1000行的时间。任何时候检查一种条件,如果条件为true,则比较结果为TRUE和FALSE;否则为true。 *的作用类似于AND条件,同时将TRUE和FALSE值分别转换为1和0。因此,两个条件都必须为true才能得出1。然后,Sumproduct将1和0总计起来,就可以得到一个计数。

要考虑星期几,您需要做一件事。 M1:S1中的标头必须是唯一的(我相信它们是唯一的)。您需要在与M相邻的列中重复它们,或者说V1中有一个可以更改为您感兴趣的星期几的标题的单元格。我假设是前者,以便您可以在同时。

为此,您要添加更多条件并注意引用锁$。

在V2中,您可以使用以下公式并根据需要向下和向右复制:

=sumproduct(($K$2:$K$1000<=$U2)*($L$2:$L$1000>=$U2)*(M$2:M$1000))

更新#1

问题1时间范围结束于第二天(午夜之后)

基于以下假设:结束时间晚于开始时间。以班次开始于22:00并结束于6:30为例,我们的想法是0630比22:00晚,因为它是第二天。 Excel不知道0630是第二天,并且没有额外的信息就假定它是同一天。在Excel中,日期存储为整数,时间存储为小数。当您仅在输入时提供时间时,它使用0作为日期。  在Excel中,日期是自1900/01/00起的天数。因此,应对超时的一种方法是增加一天的时间。这样,excel就会知道您的出班时间是在您的进班时间之后,而实际时间是一天中的早些时候。

请在下面查看示例数据。

使用样本数据,我在L中直接复制了值并将其放置在M中(=L3,然后向下复制)。然后,我将单元格的显示格式从时间更改为常规。这使您可以看到excel如何看到时间。请注意所有时间都小于1。

在N列中,当出勤时间少于入勤时间时,我在值上加1表示那是第二天,而我们实际上并未发明时间旅行。我还使用了数学运算的技巧,可以将TRUE / FALSE结果转换为1或0以缩短方程式。我使用了=M3+(L3<K3)并抄下来。您会在绿色区域中注意到这些值现在大于1。

在下一列中,我仅使用向下复制的=N3从N复制了值,然后为该单元格仅应用了时间显示格式。因为它只是时间格式,所以日期将被忽略,并且在外观上O列中的时间与L列中的时间相同。最大的不同是excel现在知道是第二天。

Time Correction

通过在空白列中使用以下公式,然后复制结果并使用粘贴特殊值将其粘贴回源列中,可以快速确定退出时间。

=M2+(L2<K2)

下一部分是您的时间检查。当查看12:00时间时,您需要查看当天的1200,以防从12:00开始轮班,并且您需要查看第二天​​的1200。为此,我们需要修改原始公式,如下所示:

=sumproduct(($K$2:$K$1000<=$U2)*($L$2:$L$1000>=$U2)*(M$2:M$1000)+($K$2:$K$1000<=$U2+1)*($L$2:$L$1000>=$U2+1)*(M$2:M$1000))

注意(M $ 2:M $ 1000) + ($ K $ 2:$ K $ 1000 <= $ U2 + 1)中间的+吗?这个+的作用类似于OR函数。

第2期时间输入/输出以15分钟为增量,范围以30分钟为增量

您可以通过ROUNDDOWN功能或MROUND来实现。我将其与TIME函数结合使用。基本上,您希望将任何四分之一小时的开始时间都视为早15分钟。

=ROUNDDOWN(E3/TIME(0,30,0),0)*TIME(0,30,0)

Where E3 is your time to be converted

因此您的公式可能看起来像这样:

=sumproduct((ROUNDDOWN($K$2:$K$1000/TIME(0,30,0),0)*TIME(0,30,0)<=$U2)*($L$2:$L$1000>=$U2)*(M$2:M$1000)+((ROUNDDOWN($K$2:$K$1000/TIME(0,30,0),0)*TIME(0,30,0)<=$U2+1)*($L$2:$L$1000>=$U2+1)*(M$2:M$1000))

类似的选项可用于离开时间,并将其舍入到下一个30分钟间隔。在这种情况下,只需使用ROUNDUP功能即可。尽管我不确定是否需要。

相关问题