带转置的条件查找

时间:2014-11-14 12:30:23

标签: excel lookup

我在Excel 2010中有以下表格:

Code    Variable      2003          2004         2005
923587  WC05301       0.300926921   0.665902164  0.916134943
923587  WC05001       0.715744225   0.453420519  0.312655924
923587  WC08376       0.247108211   0.374099217  0.378376177
923587  WC08001       0.947697297   0.686620132  0.41852137
923587  WC09204       0.78860597    0.246313221  0.556252026
923587  PTBV          0.400760313   0.637586519  0.723963115
923587  DPS           0.840353147   0.782413662  0.823206141
923587  WC02201       0.515966677   0.242782576  0.289028551
923587  WC03351       0.107782133   0.873951446  0.76152958
923587  WC02001       0.599825005   0.330610221  0.254449218
923587  WC02101       0.787267498   0.174806764  0.319124298
923587  WC02051       0.841697111   0.067667619  0.261424441

我想将此表格转换为以下格式:

Code    Year WC05301 WC05001 WC08376 WC08001 WC09204 PTBV DPS WC02201 WC03351 WC02001 WC02101 WC02051                                       
923587  2003                                                
923587  2004                                                
923587  2005                                                
923587  2006                                                
923587  2007                                                
923587  2008                                                
923587  2009                                                
923587  2010                                                
923587  2011                                                
923587  2012                                                
923587  2013                                                
923587  2014    

我希望查找(923587,WC05301,2003)交叉点中的第一个空单元格。这将产生以下形式的公式:

=INDEX(table,MATCH(Code&Year,A2:A&C1:H1,0),MATCH(Variable,B2:B))

然而,这并没有返回正确的值。我知道这与A2:A&C1:H1的调节有关,但是如何解决/调整呢?

2 个答案:

答案 0 :(得分:3)

问题是一个查找范围是垂直的而另一个是水平的。我建议使用SUMPRODUCT并将所有条件一个接一个地放在其中:

=SUMPRODUCT($C$2:$E$13*($A$2:$A$13=$A16)*($C$1:$E$1=$B16)*($B$2:$B$13=C$15))

$C$2:$E$13是范围。

($A$2:$A$13=$A16)是匹配代码的第一个条件。

($C$1:$E$1=$B16)是匹配岁月的第二个条件。

($B$2:$B$13=C$15)是匹配变量的最后一个条件。

0将是没有匹配的结果。

enter image description here


SUMPRODUCT基本上是整个范围并检查是否满足所有三个条件。现在,如果满足超过1个数字,那么如果INDEX工作,您将得到所有匹配的总和,而不是第一个匹配。

答案 1 :(得分:1)

你快到了。这有效:

=INDEX($C$2:$E$13, MATCH($A17&CHAR(1)&C$16,$A$2:$A$13&CHAR(1)&$B$2:$B$13,0), MATCH($B17,$C$1:$E$1,0))

作为数组公式输入,即按Ctrl-Shift-Enter。然后可以将此公式向下和向右复制。

注意我在加入Code& amp;时使用CHAR(1)作为分隔符的方式变量。这确保了例如代码= 123WC +变量= 456,代码= 123 +变量= WC456不会混淆。作为分隔符,您可以使用您确定永远不会出现在代码或变量中的任何字符。

enter image description here