获取未知行中最后 non-empty 单元格的第 header 列

Get column header of last non-empty cell in unknown row

我在名为 "DATA" 的 sheet 中有一个 table,具有以下 headers:

国家、代码、系列、2000、2001、2002、2003、2004、2005、2006。

在每一行中,我总是有所有列的数据,年份除外。有些行只包含某些年份的数据,其他行包含所有年份的数据。

在 sheet "DATA AVAILABILITY" 我想建立一个公式,return 是 sheet "DATA" 中有可用信息的最近一年,给定某个国家和代码。相关国家和代码位于 "DATA AVAILABILITY" 的单元格 E2 和 A3 中。为了便于讨论,假设这些是国家:安哥拉;代码:3.

我首先构建了一个包含两个条件的数组 MATCH 公式:

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

这已成功为我提供了 "DATA" 中的行,其中包含安哥拉和代码 3 的信息,即第 1776 行。

现在我想获取 sheet "DATA" 中第 1776 行最后一个 non-empty 单元格的 header。为此,我首先构建了一个公式,该公式会给出该单元格的列号:

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

它成功地 return 编辑了号码 53,在 sheet "Data" 上验证后是正确的号码。然后我添加到公式中,这样它将 return header,即年份,而不是列号:

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

最后,我想合并两个公式(MATCHINDEX 公式),以便最终结果只用一个公式 returned。但是,当我尝试这样做时,出现了错误并出现错误 - 我什至无法输入公式。当我单击 ENTER 时,Excel return 出现一个错误,指出公式有问题。我试图做的是在 INDEX 中的 LOOKUP 中替换 "Data!1776:1776" 数组 MATCH 公式,其中 return 是其中的行信息是 - 在我的示例中,第 1776 行。不起作用的最终公式如下:

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

我可能做错了什么? 谢谢

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

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

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

至return栏目编号:

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

至 return 适当的行号(使用 CSE 输入):

=MAX(($E=Data!$B:$B4701)*(A3=Data!$D:$D4701)*ROW($A:$A4701))

到return最后填写的值,在匹配Country和Code的行中,我们利用了INDEX中的列号使用0的事实函数returns 指定行中的所有列:

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

通过 CSE 进入。