【问题标题】:How to return the header by value in a PivotTable如何在数据透视表中按值返回标题
【发布时间】:2015-04-16 04:46:55
【问题描述】:

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

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 的相应标题。再说了,我写的公式连年份都写不出来。

谁能帮我找出日期和年份? (它不必在数据透视表中。您可以将其复制并粘贴到普通表中。)

【问题讨论】:

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


    【解决方案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,0,000,000,000,000,000,

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

    【讨论】:

    • 太棒了!谢谢。我只想知道这是如何工作的。为什么我们使用 1E+100?
    猜你喜欢
    • 2018-03-06
    • 2011-12-02
    相关资源
    最近更新 更多