2017-04-13 64 views
0

我不是在寻找一个VBA解决方案。 目标是找出John在2015年7月1日开始的12个月内工作了多少小时。 我有两个工作表。一个工作表如下所示:阵列算术,Excel,非VBA

Name |  Date Start  | Total Hours 
John |  7/1/2015  | Formula goes here 

工作表2

Date |  John   | Jane   | Joe 
    7/1/2015 |  3    | 2   | 2.5 
    7/2/2015 |  3    | 2.5   | 0 
    rest of attendance data 

的日期可以尽可能的电子表格将允许下去。我正在做的是将函数保留在工作表公式中。公式我现在是:

=SUMIFS(Worksheet2!B:B, Worksheet2!$A:$A, ">="&Worksheet1!$B2, Worksheet2!$A:$A, "<="&EDATE(Worksheet1!$B2, 12)) 

如果我这样做,通过VBA,我可以这样做:

Range("B"&2 & ":" & "B" & 1058476) 

但是我正在寻找一些方法来查找哪一列的人,卫生组织名称在行中的表1上,他们的名字在表2中出现在哪一列;然后,总结表2中该列中12个月时间跨度之间的所有值,并将该数字放入工作表1单元格C2中。我不想使用Worksheet2!B:B。

+0

没关系!我已经回答了这个问题 - 例如:= SUMPRODUCT(OFFSET(出席!$ A $ 1,0,1,368)) – bdpolinsky

回答

1

尝试使用偏移量。

=SUMIFS(OFFSET(Worksheet2!A:A,0,MATCH(Worksheet1!$B1,Worksheet2!$A2:$A100,0)), Worksheet2!$A:$A, ">="&Worksheet1!$B2, Worksheet2!$A:$A, "<="&EDATE(Worksheet1!$B2, 12)) 

应该获取正确的列。