Excel:使用数据透视表中的数据追踪3个月的下降

时间:2012-06-14 23:43:05

标签: excel-formula pivot-table

(http://stackoverflow.com/questions/5283466/calculate-moving-average-in-excel似乎有点相关。我很想知道非vba的方法。)

我的数据透视表中有源数据,可以计算过去36天内某人的销售量。每天在数据透视表中使用os 1列,并且人员名称在行上。

其中一些人在第1天,第2天等没有销售,可能只有3天他们在14,15和16天卖东西。不管他们的顺序是什么,我想找到最新的销售数据(最靠近数据透视表的右边缘)并计算三次销售增长,例如如果他们在C20的任何一天有更多的销售额,C20 / C19将> 1。通过减去1并改变为百分比来增加。问题是,如果一个人只在d10,d11,d12上有销售,那么我如何在Excel中设置一般公式来说“寻找最近的连续销售,然后计算这个比率”?对于过去三天有销售的人来说,这很容易。硬编码在哪里寻找每个销售价值将是混乱的。

     d1   d2   d3   d4...d7   d8   d9...d34  d35  d36   mostrecentincrease nextrecent
ant   1    5    7                                       7/5=1.4            5/1=5
bat                   ...10   11   12...                12/11=1.blah       11/10=1.1
cat   2    6    9   13
dog                                           19   20   20/19=1.blah       19/blank=0
elf   4                                                 4/dnexist=0

1 个答案:

答案 0 :(得分:0)

我没有excel,但我希望这会引导您找到正确的结果(如果这是您的列表分隔符,请使用,代替;

  1. 销售定义为给定行的d1到d36的值范围(或使用实际范围)
  2. 使用这些array formulas计算每行的最后一个值的位置(使用ctrl + shift + enter而不是在编写这些公式后输入):
    position_1 =max(if(sales<>0;column(sales)))
    position_2 =max(if((sales<>0)*(column(sales)<>position_1);column(sales)))
    position_3 =max(if((sales<>0)*(column(sales)<>position_1)*(column(sales)<>position_2);column(sales)))
  3. 检索值:
    value_1 =index(sales;position_1)
  4. 进行一些错误处理(=iferror(...;0))等......