如何通过数据透视表中的值返回标头

我有一个像这样的数据透视表:

Sum of Gf_Amount | Column Labels | 2015 | | | | Grand Total Row Labels | 17-Mar | 18-Mar | 19-Mar | 20-Mar | 3601 | 20 | 20 | | | 40 10386 | 35 | | | | 35 76301 | 5 | | | | 5 80941 | | | | 10 | 10 205738 | | | 5 | | 5 219576 | | 15 | | | 15 Grand Total | 60 | 35 | 5 | 10 | 110 

我想要做的是find最后一个非空列,并根据值返回date。 例如:对于ID 3601 ,结果应该是2015 18-Mar

目前我知道如何通过使用=LOOKUP(9.99E+307,B6:E6)find最后一个非空列。 对于ID 3601它给了我20这是正确的。 但是,当我使用:

 =INDEX($B$5:$E$5,MATCH(LOOKUP(9.99E+307,B6:E6),B6:E6,0)) 

find头,它给了我17-Mar ,这是头20的相应头。 此外,我写的公式甚至连年度都不给我。

任何人都可以帮助我,所以我可以finddate和年份? (它不必在数据透视表中,您可以将其复制并粘贴到普通表格中。)

我猜你的列标签是date索引格式为dd-mmm所以没有必要find显示的2015

  =INDEX($5:$5,MATCH(1E+100,A6:E6)) 

格式化为说dd-mmm-yyyy ,据推测复制下来可能适合。


这是MATCH函数的一个特殊性(可能从来没有真正的意图),没有可选参数,它不能在列表中find匹配,它返回列表中最后一个条目的索引 – 非常有用,有时! 所以所有的“大数字”(有很多版本 – 例如你使用的9.99E+307 )所做的就是将MATCH的数量提高到一个非常大的数字,以至于不可能find它(强制select最后一个条目)。

我喜欢1E+100 ,一个googol ,简短易记,以及“派生”。 9.99E+307理论上越接近Excel可以处理的最大数字越好:9.99999999999999E + 307但是

10,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000

对我来说是足够大的 – 我不希望有一个比这更大,小于或等于9.99E + 307的数字。