如何通过数据透视表中的值返回标头
我有一个像这样的数据透视表:
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的数字。