我有一个包含大约9个不同组的Crystal Report,希望能够得到一个包含将一个值除以另一个值的摘要。
例如(表格):
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个表格。
有没有一种简单的方法可以实现这一目标?
答案 0 :(得分:1)
步骤:
company
;列总计period
(将组选项设置为'每个月');将sales
和goal
添加到汇总字段goal
单元格,选择“嵌入式摘要”,然后选择“插入嵌入式摘要”@Embedded Summary
,Sum of Sales
,Sum of Goal
进入预览模式;右键单击Embedded Summary字段并选择'Edit Calculation Formula';添加以下内容:
local numbervar n:= GridValueAt(CurrentRowIndex,CurrentColumnIndex,1); local numbervar d:= GridValueAt(CurrentRowIndex,CurrentColumnIndex,2);
如果d<> 0则n / d * 100
取消销售和目标字段
然而,我还没有找到一种方法来消除多余的空间。
样品:
答案 1 :(得分: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
此公式的作用是确定它的周期,然后确定它所处的组级别。然后考虑该组在该级别上的假设,总结销售额和目标。
此公式的缺点是每次向下钻取时,DrillDownGroupLevel都会更改。您显示的新级别将是正确的,但仍显示的先前级别将更改。
希望这有帮助。