有移调的条件查找

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)。 这将产生以下forms的公式:

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

但是,这不会返回正确的值。 我知道这与A2:A&C1:H1空调有关,但是如何解决这个问题呢?

问题是一个查找范围是垂直的,另一个是水平的。 我会build议使用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)是匹配variables的最后一个条件。

0将是没有匹配的结果。

在这里输入图像说明


SUMPRODUCT基本上是在全部范围内检查是否满足所有三个条件。 现在,如果满足1个以上的数字,则在INDEX工作的情况下,将得到所有匹配的总和而不是第一个匹配。

你几乎在那里。 这工作:

=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))

作为数组公式input,即按下Ctrl-Shift-Enter。 然后这个公式可以被复制下来并且​​向右。

注意在join代码和variables时,我如何使用CHAR(1)作为分隔符。 这可以确保Code = 123WC + Variable = 456和Code = 123 + Variable = WC456不会混淆。 作为分隔符,您可以使用任何您确定不会出现在代码或variables中的字符。

在这里输入图像说明