excel - 带转置的条件查找

标签 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 上的条件有关。但是如何解决/调整呢?

最佳答案

问题是一个查找范围是垂直的,另一个是水平的。我建议使用 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基本上是取整个范围并检查是否满足所有三个条件。现在,如果满足多个数字,您将获得所有匹配的总和作为结果,而不是第一个匹配 if INDEX工作。

关于excel - 带转置的条件查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26930079/

相关文章:

python - Pandas 查表

c++ - 这是否因为两次查找而不是一次查找而变慢?

r - 从与变量匹配的另一列中查找值

excel - 如何使用宏将数字格式化为文件名中至少包含 5 位数字?

VBA 调试 : Step Into leads to Entire Program Running

excel - 单个 Excel 工作表中的多个 NamedStyle - Python openpyxl

arrays - C 将大文本文件加载到数组中

c# - 如何使用 C# Windows 窗体读取 Excel 中的多个单元格

vba - 如何在Excel VBA中访问Word公共(public)变量

c - 以固定大小的位数组作为键查找表