我正在尝试计算父组中单元格“Anzahl”中已过滤子组的总和。正如您在示例屏幕截图中看到的那样,子组中有两个数字15和5,父组中的单元格显示24而不是20。
截图:
https://dl.dropboxusercontent.com/u/17838009/screenshot.jpg https://dl.dropboxusercontent.com/u/17838009/screenshot2.jpg
=Countrows("table1_dc_evn_vpkn")
这会抛出错误:“scope参数必须设置为一个字符串常量,该常量等于包含组的名称,包含数据区域的名称或数据集的名称。”
所有使用=Sum
,=Count
和=IIF
查询的尝试都会产生错误的结果,因为它会在没有子组过滤器的情况下进行计算。
我也试过一些自定义代码:
Public Total As Integer =0
Public Function Sum(ByVal Value As Integer) As Integer
Total = Total + Value
Return Value
End Function
这也不起作用。
我正在寻找访问来自父组的子组单元格内容的可能性。我想类似于:
=Sum(ReportItems!Textbox90.Value)
由于以下原因不起作用:“聚合函数只能用于页眉和页脚中包含的报表项目。”
如何计算已过滤子组的总和?
答案 0 :(得分:1)
您应该将要应用的聚合函数放在组页眉或页脚中。这样,任何过滤或分组也将应用于它们。此外,您通常应将聚合函数应用于字段值,而不是报告项目。
如果需要将数据放在分组行之外,可以将聚合函数的scope参数设置为报告中组的名称。 scope参数是传递给聚合函数的第二个可选参数。在你的情况下(我认为)该组的名称是“table1_dc_evp_vpkn”。所以你的聚合表达式看起来像:
=Sum(Fields!FieldName.Value, "table1_dc_evp_vpkn")
scope参数将聚合限制为报表中的范围。当您想要从组内部或报告的其他过滤部分引用整个数据集的聚合时,这可以派上用场,因为您可以将范围设置为数据集本身的名称,并且它将在没有字段的情况下进行聚合。
答案 1 :(得分:0)
尝试Sum(Max(Fields!FieldNameValue,“ childGroupName”))。在“总和”级别进行分组没有任何意义。您要在开始求和之前应用此组。