2012-10-22 39 views
0

我有一个水晶报表,它包含大约9个不同的组,并且希望能够得到一个包含将一个值除以另一个值的总结。涉及划分水晶报表的小组汇总

例如(表):

Period Company Division Region State City Store Employee Sales Goal 
01-2012 Ab Works Northern NW  OR  Ball 888  Foo  100  150 
01-2012 Ab Works Northern NW  OR  Ball 888  Choo  175  120 
02-2012 Ab Works Southern SE  GA  Chip 743  Bar  34  75 
02-2012 Perrywee Northern NC  MN  Fedd 147  Bill  80  64 
03-2012 Perrywee Eastern FE  WV  Wood 98  Tim  75  250 
01-2012 Perrywee Eastern FE  WV  Wood 92  Karl  84  250 
01-2012 Perrywee Western W  CA  Fub 398  Fubar  175  170 

我的输出然后看起来像这样:

Company Jan2012 Feb2012 Mar2012 ... YTD-Avg 
Ab Works 70.3%  87.3%  87.5%  84.3% 
Perrywee 93.5%  97.3%  130.3%  90.4% 

每个将使向下钻取到它下面的基团,并且该值由的总和计算小组的销售额除以小组的目标总和。由于有14个时期和8个组,我想避免创建〜115个形式。

有没有简单的方法来完成这个?

+1

您可能必须使用交叉表报表才能达到此效果 –

+0

交叉表将生成他想要的网格,但交叉表不具有“向下钻取”功能。 – craig

回答

1

我做过类似但不使用百分比的东西。我认为这样做的方式几乎是痛苦的,但你会拥有钻取功能。我会发布我想出来的东西,但是如果有人可以通过一切手段修改它以使其更容易。

首先,创建8个要使用的组并隐藏它们。您需要14个公式才能为您的期间创建列。为了您的第一阶段,公式(并按照周期)应该是这样的:

IF {table.period} = "01-2012" THEN 
    IF DrillDownGroupLevel = 0 THEN 
     SUM({table.sales}, {table.group1})/SUM({table.goal}, {table.group1}) 
    ELSE IF DrillDownGroupLevel = 1 THEN 
     SUM({table.sales}, {table.group2})/SUM({table.goal}, {table.group2}) 
    ELSE IF DrillDownGroupLevel = 2 THEN 
     SUM({table.sales}, {table.group3})/SUM({table.goal}, {table.group3}) 
    ELSE IF DrillDownGroupLevel = 3 THEN 
     SUM({table.sales}, {table.group4})/SUM({table.goal}, {table.group4}) 
    ... 
    ELSE 
     SUM({table.sales}, {table.group8})/SUM({table.goal}, {table.group8}) 
ELSE 
    0 

什么这个公式的作用是判断它是什么时间段,然后确定它是什么组级别。然后总结销售和目标,考虑该团队在该级别上的假设。

  • 对于线IF {table.period} = “01-2012” THEN,我设置为一个参数,以便它会为多年的工作。
  • 我宁愿使用函数来确定我所在的组级别,但我知道的只有DrillDownGroupLevel。如果你试图对这些团体进行一些幻想(有条件的抑制)不做简单的深入研究,这是有用但有缺陷的。
  • 更改为{table.group1}您曾用于该组级别的任何字段。即{table.company}

该公式的缺点是每次向下钻时,DrillDownGroupLevel都会改变。您揭示的新水平将是正确的,但之前的水平仍然会显示出来。

希望这会有所帮助。

+0

虽然它不能完全解决我的问题,但它使我走上了另一条道路,并帮助我接近我需要的东西。 – user1238918

1

步骤:

  • 插入交叉片;行总数为company;列总数为period(为每个月设置组选项);添加salesgoal到汇总字段
  • 预览报告
  • 右键单击一个goal单元格,选择“嵌入式汇总”,然后选择“插件嵌入摘要”
  • 切换到设计模式(交叉表专家);确保字段顺序(从上到下)为@Embedded Summary,Sum of Sales,Sum of Goal
  • 进入预览模式;右键单击嵌入摘要字段并选择“编辑计算公式”;添加以下内容:

    local numbervar n:= GridValueAt(CurrentRowIndex,CurrentColumnIndex,1); local numbervar d:= GridValueAt(CurrentRowIndex,CurrentColumnIndex,2);

    如果d <> 0,则n/d * 100

  • 抑制销售目标领域

我还没有(还)找到一种方法来去除多余的空间,但是。

样品:

enter image description here