如何在SSRS分组中获取指定列分组总计单元格的值?
获取SSRS列分组总计值并在其他表格复用
我之前做SSRS报表时也碰到过一模一样的需求,给你几个实用的解决办法,按需选择就行:
方法一:用报表变量存储(最通用,跨数据区域也能用)
- 先调出「报表数据」面板(快捷键
Ctrl+Alt+D),右键「变量」→「添加变量」,起名比如TargetColTotal,记得勾选「允许修改」。 - 找到你红框里的列分组总计单元格,右键选「表达式」,把原来的总计公式(比如
Sum(Fields!销售额.Value))改成这样:
这里的=Variables!TargetColTotal.SetValue(Sum(Fields!销售额.Value, "你的列分组名称"))"你的列分组名称"要换成你实际的列分组名——去「分组」面板(视图→分组)里找,别写错了。 - 到其他表格需要显示这个值的单元格,直接用表达式:
搞定,这个值就能跨表格显示出来了。=Variables!TargetColTotal.Value
方法二:直接通过分组作用域引用(同数据集场景最省事)
如果你的目标表格和带行列分组的表格用的是同一个数据集,那不用搞变量,直接在目标单元格写表达式:
=Sum(Fields!销售额.Value, "你的列分组名称")
指定分组作用域后,SSRS会自动计算该分组的总计,简单又直接。
方法三:自定义代码存储(复杂场景兜底)
要是上面两种都不适用(比如两个表格用不同数据集),可以写点VB代码来存值:
- 右键报表空白处→「报表属性」→「代码」标签,粘贴这段代码:
Private _colTotal As Decimal Public Sub SetColTotal(ByVal val As Decimal) _colTotal = val End Sub Public Function GetColTotal() As Decimal Return _colTotal End Function - 回到列分组总计单元格,表达式改成:
=Code.SetColTotal(Sum(Fields!销售额.Value, "你的列分组名称")) - 其他表格的目标单元格用:
=Code.GetColTotal()
注意事项
- 分组名称一定要准确,写错了会报表达式错误,去分组面板核对好。
- 要是报表有多页,变量或自定义代码存的值会保留,但如果有多个列分组总计,注意别让变量被覆盖了。
- 别用
ReportItems跨数据区域引用,它只能在同一个表格/矩阵里生效。
内容的提问来源于stack exchange,提问作者Raxak
相关产品推荐
相关产品推荐

