没有VBA,但索引和匹配转换值

我试图find没有macros在Excel中的解决scheme以下问题:

有一个表包含不同时间段的学生评分。

所以ID = 1的学生在1月份到4月份的评分是1分,从Mai到6月份是3分。

1月至6月,另外两名学生的排名(6和9)不变

| A | B | C |D | ---| ----|------------|------------|-------| 1 | ID | START | END |RANKING| 2 | 1 | 01.01.2014 | 30.04.2014 | 1 | 3 | 1 | 01.05.2014 | 30.06.2014 | 3 | 4 | 2 | 01.01.2014 | 30.06.2014 | 6 | 5 | 3 | 01.01.2014 | 30.06.2014 | 9 | 

下一个表格包含ID(y轴)和Months(x轴)

  | F | G | H | I | J | K | L | ---| ----|--------|--------|--------|--------|--------|--------| 1 | ID | 201401 | 201402 | 201403 | 201404 | 201405 | 201406 | 2 | 1 | | | | | | | 3 | 2 | | | | | | | 4 | 3 | | | | | | | 

我想感受这样的第二张桌子:

 | ID | 201401 | 201402 | 201403 | 201404 | 201405 | 201406 | | ----|--------|--------|--------|--------|--------|--------| | 1 | 1 | 1 | 1 | 1 | 3 | 3 | | 2 | 6 | 6 | 6 | 6 | 6 | 6 | | 3 | 9 | 9 | 9 | 9 | 9 | 9 | 

我试图使用索引和匹配,但没有任何好的结果,因为我还没有find一个可能性使用IF(如果(

有人可以帮忙吗?

您可以通过SUMPRODUCT

根据你提供的布局,这个公式应该放在G2里面,并且填充一遍又一遍

 =SUMPRODUCT(--($A:$A=$F2),--($B:$B<=G$1),--($C:$C>G$1),$D:$D) 

这在A列中查找与F2匹配的ID,那么对于每一个它find的那些:

  • 它检查B列中的date与G1中的date
  • 它检查C列中的date与G1中的date
  • 如果所有条件匹配,则返回列D中的值

这假设你每个阶段只有一个条目,否则它会将它们相加。

另外,你可以使用SUMIFS ,但是读起来不那么容易,但是我认为它比SUMPRODUCT稍微更有效率(我不是积极的,只是使用的轶事证据)

 =SUMIFS($D:$D,$A:$A,"="&$F3,$B:$B,"<="&G$1,$C:$C,">"&G$1) 

它完全一样,只是语法不同而已。