Excel:每隔30分钟计算总计划

时间:2015-02-22 16:03:50

标签: excel excel-vba excel-formula vba

我试图找到一种方法,根据他们的开始时间和结束时间,计算每天每30分钟有多少人可用。

例如,如果4人在上午7:00进入并在下午3:00离开,3人在早上8:00进入并在下午4:00离开则意味着;

7:00 AM = 4
7:30 AM = 4
8:00 AM = 7
8:30 AM = 7

等等。

但当然,一旦下午3点到这里,它就会是这样的。

2:30 PM = 7
3:00 PM = 3
3:30 PM = 3

等等。

我的第A列带有"开始时间"和B列"退出时间"基于每个人的日程安排

这里有一些样本时间表数据

In        Out
7:00 AM   3:00 PM
7:00 AM   1:00 PM
7:00 AM   3:00 PM
7:00 AM   3:00 PM
8:00 AM   1:00 PM
8:00 AM   2:00 PM
8:00 AM   4:00 PM
8:00 AM   4:00 PM
8:00 AM   4:00 PM
8:00 AM   4:00 PM
8:00 AM   4:00 PM
8:00 AM   2:00 PM
8:00 AM   3:00 PM
8:00 AM   4:00 PM
9:00 AM   4:00 PM
9:00 AM   5:00 PM
9:00 AM  5:00 PM
9:00 AM  5:00 PM
9:00 AM   5:00 PM
9:00 AM   5:00 PM
9:00 AM   5:00 PM
9:00 AM   5:00 PM
9:00 AM   5:00 PM
9:00 AM   5:00 PM
9:00 AM   5:00 PM
9:00 AM   5:00 PM
9:00 AM   5:00 PM
9:00 AM   5:00 PM
9:00 AM   5:00 PM
10:00 AM  6:00 PM
10:00 AM  6:00 PM
10:00 AM  6:00 PM
10:00 AM  6:00 PM
10:00 AM  6:00 PM

然后在D栏上我按以下格式提供所有24小时30分钟的间隔。

12:00 AM
12:30 AM
1:00 AM
1:30 AM
2:00 AM
2:30 AM
3:00 AM
3:30 AM
4:00 AM
4:30 AM
5:00 AM
5:30 AM
6:00 AM
6:30 AM
7:00 AM
7:30 AM
8:00 AM
8:30 AM
9:00 AM
9:30 AM
10:00 AM
10:30 AM
11:00 AM
11:30 AM
12:00 PM
12:30 PM
1:00 PM
1:30 PM
2:00 PM
2:30 PM
3:00 PM
3:30 PM
4:00 PM
4:30 PM
5:00 PM
5:30 PM
6:00 PM
6:30 PM
7:00 PM
7:30 PM
8:00 PM
8:30 PM
9:00 PM
9:30 PM
10:00 PM
10:30 PM
11:00 PM
11:30 PM

我可以手动执行此操作但是我试图通过简化复制粘贴A列和B列中每个人的日程安排来避免这种情况,并将结果显示在E列(D旁边) )

我一直在手动执行此操作,但是更多的人和更多的时间表到了,继续手动计算会更加令人沮丧。

我不介意是否可以使用公式或VBA来完成。

我迄今为止唯一能做的就是COUNTIF每小时开始计划的次数= COUNTIF(A:A,D2)以及每小时结束的次数= COUNTIF(B:B,D2)它只是让其余的手工工作更容易,但除此之外,我无法想到在提到之前做所有事情的方法。

先谢谢,

1 个答案:

答案 0 :(得分:1)

尝试在E2中使用COUNTIFS复制 - 假设同一天的所有班次

=COUNTIFS(A:A,"<="&D2,B:B,">"&D2)

如果你有像18:00-02:00那样的午夜班次,那就试试这个版本

=SUMPRODUCT(((A$2:A$1000<=D2)+(B$2:B$1000>D2)+(A$2:A$1000>B$2:B$1000)=2)+0)

假设最多1000行数据,请根据需要进行调整