Excel索引匹配多行结果

时间:2014-01-22 16:40:59

标签: excel excel-formula excel-match

我遇到了Excel问题,我希望有人可以提供帮助。我阅读了10-15个类似的主题,但我无法获得任何工作。这是我在哪里......

我有一个大型数据集,其中包含YearNameTotal 1Total 2(以及其他20多个列)的列。根据年度总计,相同的名称显示在多行中。在另一张纸上,我有另一个包含Name的数据集,并希望将第一张数据拉入列,如下所示。

enter image description here

我过去只使用一年作为初始数据集,使用以下公式完成此操作:

=INDEX(DATARANGE,MATCH([@Name],DATARANGE[Name],0),MATCH("Total 1",DATARANGE[#Headers],0))

我遇到的问题是将多年数据添加到第一个数据集的结果。有没有办法根据nameyear匹配行,然后返回相应列的结果?

3 个答案:

答案 0 :(得分:2)

=SUM(($A$2:$A$9=B$16)*($B$2:$B$9=$A17)*($C$2:$C$9))

在单元格B14中输入上面的数组公式或以下作为标准

=SUMPRODUCT(($A$2:$A$9=B$16)*($B$2:$B$9=$A17)*($C$2:$C$9))

你可以对总数2做同样的事情,只需用Ds替换Cs

然后向右和向下拖动。

答案 1 :(得分:1)

将第一个MATCH函数更改为:

=MATCH(1,INDEX(([@Name]=DATARANGE[Name])*([@Year]=DATARANGE[Year]),0),0)

所以作为整个公式的一部分就是这个

=INDEX(DATARANGE,MATCH(1,INDEX(([@Name]=DATARANGE[Name])*([@Year]=DATARANGE[Year]),0),0) ,MATCH("Total 1",DATARANGE[#Headers],0))

另一种只能用于返回数字的方法(如此处所示)是这样的:(为了简单起见,使用单元格引用)。

=SUMPRODUCT((A2:A9=2013)*(B2:B9="name x")*(C1:D1="Total 1"),C2:D9)

答案 2 :(得分:0)

如果要编制索引的数据是表格,那么

=MATCH(1,INDEX(([@Name]=DATARANGE[Name])*([@Year]=DATARANGE[Year]),0),0)

应该更正为

的正确结构参考
@[Name]

此外,由于这是一个数组公式,它可能根本不适用于结构化引用。通过常规细胞参考你会得到更好的服务。此外,如果它不是一个表,那么单元格引用也会起作用。