如何按数据透视表中的值 return header

How to return the header by value in a PivotTable

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

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

我想要做的是根据值找到最后一个 non-empty 列和 return 日期。例如:对于 ID 3601,结果应该是 2015 18-Mar

目前我知道如何使用 =LOOKUP(9.99E+307,B6:E6) 找到最后的 non-empty 列。对于 ID 3601,它给了我 20,这是正确的。但是当我使用:

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

找到 header,它给了我 17-Mar,这是 第一个 20 对应的 header。再说了,我写的公式连年份都不能给我。

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

我猜您的列标签是格式为 dd-mmm 的日期索引,因此无需查找显示的 2015 因此:

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

格式如 dd-mmm-yyyy 并且大概复制下来可能适合。


MATCH 函数的一个特点(也许从来没有真正打算过),如果没有可选参数,它在列表中找不到匹配的地方它 returns 的索引列表中的最后一个条目——有时非常有用,就像这里一样!所以所有的“大数字”(它有很多版本——例如你使用的那个 9.99E+307)所做的就是输入 MATCH 一个大到永远不可能找到它的数字(强制选择最后一个入口)。

我喜欢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,0,00,0[0,00,0]0,00,0[0,0,0]

对我来说已经足够大了——我不希望使用比这个更大但小于或等于 9.99E+307 的数字。