我有2列包含数据。如果超过25%,第1列我想变成绿色,如果超过10,第2列我想变成绿色。如果第2列是绿色,我不希望它改变第1列的颜色,反之亦然。
这是第1列
=IIF(Fields!New_Strategic_Devices_Qty.Value / Fields!New_and_Upgrade_Postpaid_phones.Value > 0.2199 , "SpringGreen" , IIF(Fields!New_Strategic_Devices_Qty.Value / Fields!New_and_Upgrade_Postpaid_phones.Value < 0.2199 , "White" , 0))
下面是我目前在第2列中的内容。
=IIF(Fields!New_Strategic_Devices_Qty.Value>=ReportItems!newstratgoal.Value,"LimeGreen", iif(ReportItems!pull_through_percent.Value >0.2199,"White","DimGray"))
答案 0 :(得分:0)
我不确定在同时满足两个条件时您期望如何处理颜色-Column1> 25%和Column2>10。我会 ass u 我在这种情况下,第1列优先。
对于第一列的 BackgroundColor 属性,您将拥有
=IIF(Fields!New_Strategic_Devices_Qty.Value / Fields!New_and_Upgrade_Postpaid_phones.Value > 0.25,
"SpringGreen",
"White")
对于第二列,您确实需要第一列颜色的额外IIF来检查第一列颜色
=IIF(Fields!New_Strategic_Devices_Qty.Value >= ReportItems!newstratgoal.Value,
IIF(Fields!New_Strategic_Devices_Qty.Value / Fields!New_and_Upgrade_Postpaid_phones.Value > 0.25,
"LimeGreen",
"White"))
顺便说一句,对于您给出的表达式,您不需要第二个IIF,除非值为EXACLTY 21.99%,否则它将被第一个IIF的ELSE覆盖。颜色0仍然可能会产生错误。
=IIF(Fields!New_Strategic_Devices_Qty.Value / Fields!New_and_Upgrade_Postpaid_phones.Value > 0.2199 ,
"SpringGreen" ,
IIF(Fields!New_Strategic_Devices_Qty.Value / Fields!New_and_Upgrade_Postpaid_phones.Value < 0.2199 , "White" , 0))
我更喜欢薄荷奶油以绿色突出显示。
答案 1 :(得分:0)
在我看来,您需要两次编写相同的公式,这在可读性和维护方面都是不好的做法。我有一个解决方案供您优化正在处理的设计。
您将要在“组属性”上使用“变量”并在此处设置表达式。完成后,您可以使用以下语法在报表主体中引用这些变量作为表达式:=Variables!myVariableName.Value
。定义了组变量后,实现要定义的逻辑应该会更简单。您可以在[Field Expression]
和[Color Expression]
中引用组变量。
我还建议使用SWITCH而不是IIF,switch更易读,并且更容易在表达式中定义更多规则。以下是一些使用switch的示例。请不要担心最后一个表达式中的ELSE条件需要'true'才能评估隐式条件。
我希望这对您的解决方案有所帮助。
两篇参考文章:
组变量,表达式演示:
[fxSal_PositiveResult]:
=SWITCH(
(
Fields!SAL27.Value= 0
OR (Fields!SAL27.Value= 1 AND Fields!SAL28.Value= -1)
OR (Fields!SAL27.Value= -2 AND Fields!SAL28.Value<> 1)
), Fields!SAL27.Value
,true, Fields!SAL28.Value
)
[fxCampy_PositiveResult]:
=SWITCH(
(
Not(IsNothing(Fields!CAM11.Value))
), Fields!CAM11.Value
,true, Fields!CAM12.Value
)
演示,屏幕截图: