我在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
的调节有关,但是如何解决/调整呢?
答案 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将是没有匹配的结果。
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不会混淆。作为分隔符,您可以使用您确定永远不会出现在代码或变量中的任何字符。