如何在数据透视表中按值返回标头

时间:2015-04-16 04:46:55

标签: excel excel-formula match pivot-table worksheet-function

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

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

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

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

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

要找到标题,它会向我17-Mar提供第一个 20的相应标题。此外,我写的公式甚至不能给我一年。

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

1 个答案:

答案 0 :(得分:1)

我猜你的列标签是格式为dd-mmm的日期索引,所以不需要找到显示的2015

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

格式化为dd-mmm-yyyy格式,并且可能会被复制下来。


MATCH函数的特性(可能从未真正意图),如果没有可选参数,它在列表中找不到匹配项,它返回列表中最后一个条目的索引 - 非常有用,有时候,有时候!因此,所有“大数字”(它有很多版本 - 例如你使用的那个9.99E+307)所做的就是给MATCH提供一个如此之大的数字,它永远不可能找到它(强制选择最后一个)条目)。

我喜欢1E+100googol,简短易记,以及“衍生”。 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,000,000,000,000,000

对我来说足够大 - 我不希望曾经想要使用大于那个且小于或等于9.99E + 307的数字。