获取未知行

时间:2018-02-08 17:15:55

标签: arrays excel indexing match lookup

我在一张名为" DATA"使用以下标题:

Country,Code,Series,2000,2001,2002,2003,2004,2005,2006。

在每一行中,除了年份之外,我总是拥有所有列的数据。有些行只有几年的数据,有些行多年。

表格"数据可用性"我想建立一个公式,该公式返回最近一年,在给定某个国家/地区和代码的情况下,在表格#34; DATA"中有可用信息。相关国家和代码位于"数据可用性"的单元格E2和A3中。让我们说,为了论证,这些是国家:安哥拉;代码:3。

我首先使用两个条件构建了一个数组MATCH公式:

={MATCH(1,('DATA AVAILABILITY'!E$2=Data!$B$1:$B$104701)*('DATA AVAILABILITY'!$A3=Data!$D$1:$D$104701),0)}

这已经成功地给了我" DATA"其中有安哥拉和代码3的信息,即第1776行。

现在我想在表格#34; DATA"中获取第1776行的最后一个非空单元格的标题。为此,我开始构建一个公式,为我提供该单元格的列号:

=LOOKUP(2,1/(Data!1776:1776<>""),COLUMN(Data!1776:1776))

成功返回了数字53,经过表格&#34;数据&#34;是正确的数字。然后我添加到公式中,以便它返回标题,即年份,而不是列号:

=INDEX(Data!$A$1:$BE$104701,1,LOOKUP(2,1/(Data!1776:1776<>""),COLUMN(Data!1776:1776)))

最后,我想结合两个公式(MATCHINDEX公式),以便最终结果只返回一个公式。然而,当我尝试这样做时,出现问题并出现错误 - 我甚至无法输入公式。当我单击ENTER时,Excel将返回一个错误,指出公式存在问题。我试图做的是替换LOOKUP中的INDEX,&#34;数据!1776:1776&#34;对于数组MATCH公式,它返回信息所在的行 - 在我的示例中,第1776行。最终公式不起作用如下:

=INDEX(Data!$A$1:$BE$104701,1,LOOKUP(2,1/(MATCH(1,('DATA AVAILABILITY'!E$2=Data!$B$1:$B$104701)*('DATA AVAILABILITY'!$A3=Data!$D$1:$D$104701)<>""),COLUMN(MATCH(1,('DATA AVAILABILITY'!E$2=Data!$B$1:$B$104701)*('DATA AVAILABILITY'!$A3=Data!$D$1:$D$104701))))

我可能做错了什么? 谢谢

1 个答案:

答案 0 :(得分:1)

如果没有至少一些示例数据(作为表格或链接的工作簿 - 不作为屏幕截图),很难说出发生了什么,我会做的有点不同。

您可以简化公式以获取包含第1776行中最后一个数据的列的标题:

=LOOKUP(2,1/(Data!1776:1776<>""),Data!$1:$1)

要返回列号:

=LOOKUP(2,1/(Data!1776:1776<>""),COLUMN(Data!$1:$1))

返回适当的行号(使用CSE输入):

=MAX(($E$2=Data!$B$1:$B$104701)*(A3=Data!$D$1:$D$104701)*ROW($A$1:$A$104701))

要返回最后填入的值,在与Country和Code匹配的行中,我们使用0函数中使用INDEX作为列号返回所有列的事实指定的行:

=LOOKUP(2,1/(INDEX(Data!$B$1:$BE$104701,MAX(($E$2=Data!$B$1:$B$104701)*(A3=Data!$D$1:$D$104701)*ROW($A$1:$A$104701)),0)<>""),INDEX(Data!$B$1:$BE$104701,MAX(($E$2=Data!$B$1:$BE$104701)*(A3=Data!$D$1:$D$104701)*ROW($A$1:$A$104701)),0))

与CSE一起进入。