问题描述
我的任务是用一个矩阵编写报告,该矩阵按行和列对数据进行分类和分组,我被告知每行必须是特定颜色,具体取决于最大计数出现在哪个列组中。
>所以我创建了我的矩阵。在行上,它首先按州分组,然后按城市分组,底部有一个总行。列组基于我创建的两个计算字段。以下是他们的标签和表达:
自上次更新后的天数
=DateDiff(DateInterval.Day,Fields!RECORD_UPDATED_DATE.Value,Today())
DaysSinceUpdateGrouping
=Switch(Fields!DaysSinceLastUpdate.Value<91,"Less Than 90 Days",Fields!DaysSinceLastUpdate.Value<181,"91-180 Days",Fields!DaysSinceLastUpdate.Value<365,"181-365 Days",Fields!DaysSinceLastUpdate.Value>=365,"More Than 1 Year")
所以我的表是这样的:
状态 | 城市 | DaysSinceUpdateGrouping | 总记录 |
---|---|---|---|
城市 | Countdistinct(RecordID) | Countdistinct(RecordID) | |
状态 | 总计 | Countdistinct(RecordID) | Countdistinct(RecordID) |
总计 | Countdistinct(RecordID) | Countdistinct(RecordID) |
当报表运行时,用户使用参数选择一个或多个状态。如果用户只选择俄勒冈州,结果可能如下所示:
状态 | 城市 | 少于 90 天 | 91-180 天 | 181-365 天 | 1 年以上 | 总记录 |
---|---|---|---|---|---|---|
波特兰 | 50 | 80 | 100 | 10 | 240 | |
尤金 | 40 | 20 | 60 | 100 | 220 | |
弯曲 | 100 | 10 | 0 | 20 | 130 | |
俄勒冈 | 总计 | 190 | 110 | 160 | 130 | 590 |
总计 | 190 | 110 | 160 | 130 | 590 |
我想要做的是根据最大值出现的位置使每一整行改变颜色。对于波特兰,最高值位于“181-365”天列中,因此我希望该行为橙色。对于 Eugene,最高值位于“超过 1 年”列中,因此我希望该行为红色。对于 Bend,最高值位于“Less Than 90 Days”列中,因此我希望该行为绿色。 Oregon 和 Total 行也应该是绿色的。 (如果“91-180 天”列具有最大值,则其关联行应为黄色。)
我选择了要应用背景颜色规则的单元格,并将此表达式应用于 Fill 属性:
=switch(max(Fields!DaysSinceUpdateGrouping.Value,"City")="Less Than 90 Days","LimeGreen",max(Fields!DaysSinceUpdateGrouping.Value,"City")="91-180 Days","Yellow","City")="181-365 Days","Orange","City")="More Than 1 Year","Tomato")
但这一行总是变成红色。
知道我做错了什么吗?如何告诉 Fill 表达式为每一行找到列组中的最大值?
解决方法
我明白了!除了列组之外,我还必须为 DaysSinceUpdateGrouping 添加一个行组。然后我删除了出现的列,但将组留在原地。这样,在我的单元格颜色的 Switch 表达式中,我能够用“DaysSinceUpdateGrouping1”替换“City”,以便参考计算详细信息,而不是城市总数。