如何使用数组公式计算excel 3d数组中的列,然后行,然后列

我正在Excel中构build一个计划工具。 这包括具有开始和结束date的任务列表以及可以分配给每个任务的人员。

为了能够将这些数据输出到我们的预算系统中,我需要能够计算在特定月份内预订的工作人员时间的百分比(总计所有任务)。

我可以使用下面的公式计算一个工作人员在一个特定的任务中可用的时间量:

=SUM(INDEX(WorkdayArrayMonCol,MATCH(B2,WorkdayArrayDateCol)):INDEX(WorkdayArrayFriCol,MATCH(C2,WorkdayArrayDateCol))*TRANSPOSE('Staff Profile'!$B$13:$B$17)) 

这对于单个任务来说很好,但是我需要一个等效的工作来完成一系列的任务。

我的尝试目前看起来像这样:

 =IFERROR(MMULT(MMULT(TRANSPOSE(ROW(INDEX(WorkdayArrayMonCol,MATCH(B2:B12,WorkdayArrayDateCol)):INDEX(WorkdayArrayFriCol,MATCH(C2:C12,WorkdayArrayDateCol)))^0),INDEX(WorkdayArrayMonCol,MATCH(B2:B12,WorkdayArrayDateCol)):INDEX(WorkdayArrayFriCol,MATCH(C2:C12,WorkdayArrayDateCol))),'Staff Profile'!$B$13:$B$17),0) 

+ Ctrl + Shift + Enter

公式使用索引/匹配查找B2:B12 (task start date) and C2:C12 (task end date)

如果任务超出当前月份范围,则使用0 (0/01/1900) 。 这些search表WorkdayArray

具有6列Date,Mon,Tue ….到Fri,然后返回date范围的二维数组,其中包括将每个工作日的多less个值加在范围内的值。 准确地捕捉公众假期是必要的。

这个二维数组然后乘以工作人员的工作可用性,这是在'Staff Profile'!$B$13:$B$17 ,这五个值中的每一个都是0> => 1代表周一到周五。 例如,如果他们星期二工作了半天,但在本周剩下的时间里工作一整天,5个单元看起来就像{1,0.5,1,1,1}

使用这里张贴的技术: 如何使用数组公式来在Excel中返回一个和数组我已经设法得到它压缩到一个向量,但我不能得到它总结最后的总和。

使用上面的公式,输出为{8.5;4;2;2;0;0;0;0;0;0;1} ,这是每个任务可用的工作日,但是我试图将这个结果数据连接的MMULT技术, SUMPRODUCTSUMSUMIF保持返回相同的数据: {8.5;4;2;2;0;0;0;0;0;0;1}

由于这个计算将在每个财政月份(y)重复进行,因此在每个工作人员(x)中,通过使用(z)表单来执行3D excel表示是不可行的,因为x,y和z中的每一个都不切实际。 我宁愿不使用VBA,我已经足够接近,似乎应该可以使用公式。

非常感谢!

编辑:一个单一的版本重新扎克的请求(相同的公式,调整参考):

单页版本:

我select了11个单元格来说明数组结果(我想要的是输出这些值的总和的公式,17.5)。

我用不同的方法来获得所需的结果,即这个数组公式:

=SUM(COUNTIFS(B2:B12,"<="&Table1[Date],C2:C12,">="&Table1[Date])*MMULT(Table1[[Monday]:[Friday]],P3:P7))

CTRL + SHIFT + ENTER确认

COUNTIFS部分为您提供了一个垂直向量,表示每个date在列B和Cdate范围中出现的次数,然后MMULT部分为您提供另一个垂直向量,其中每个date的值基于P3:P7

这两个vector然后可以相乘并相加,得到最终结果 – P12显示的17.5

在这里输入图像描述