在没有VBA但使用索引和匹配的情况下转换值

时间:2014-06-06 15:48:50

标签: excel

我试图在excel中找到没有宏的解决方案来解决以下问题:

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

因此ID = 1的学生的评分从1月到4月为1,从5月到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   |

我尝试使用索引和匹配,但没有任何好结果,因为我没有找到使用IF的可能性(如果(

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

您可以使用SUMPRODUCT

获取所需内容

根据您提供的布局,此公式应在放入G2并填写

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

在A列中查找匹配F2的ID,然后找到它们的每一个:

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

这假设您每个期间只有一个条目,否则它们会将它们相加。

另外,你可以使用SUMIFS,它不太容易阅读,但我认为它比SUMPRODUCT略高一些(我不是积极的,只是来自使用的轶事证据)

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

它完全相同,只是语法不同。