我有一个像这样的数据透视表:
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
的相应标题。此外,我写的公式甚至不能给我一年。
任何人都可以帮助我,所以我可以找到日期和年份吗? (它不必在数据透视表中。您可以将其复制并粘贴到普通表中。)
答案 0 :(得分:1)
我猜你的列标签是格式为dd-mmm
的日期索引,所以不需要找到显示的2015
:
=INDEX($5:$5,MATCH(1E+100,A6:E6))
格式化为dd-mmm-yyyy
格式,并且可能会被复制下来。
MATCH函数的特性(可能从未真正意图),如果没有可选参数,它在列表中找不到匹配项,它返回列表中最后一个条目的索引 - 非常有用,有时候,有时候!因此,所有“大数字”(它有很多版本 - 例如你使用的那个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,000,000,000,000,000,000,000,000,000,000
对我来说足够大 - 我不希望曾经想要使用大于那个且小于或等于9.99E + 307的数字。