0

在我的表中,在 20 条记录中,我根据以下表达式得到 4 条记录“红色”:

=Switch(DateDiff(DateInterval.Hour, Fields!SLA.Value, Now())<=72,"White",Fields!SLA.Value<now(),"Red",true,"White")

在此处输入图像描述

我想根据背景颜色“RED”对“count_of_value”求和。

这是我正在尝试的。但是,它的显示错误。

="The number is " & IIF("Red",Sum(Fields!count_of_value.Value, "DataSet1"),'') & "."

and 

 ="The number is " & Sum(IIF("Red",Sum(Fields!count_of_value.Value, "DataSet1"),'')) & "."

我想实现两件事:

从第一列,我想得到颜色“红色”的最后日期。例如,在这种情况下,2019 年 2 月 5 日。

从第二列,我想得到颜色为“红色”的数字的总和。例如,在这种情况下,214519

我在做什么?如何做到这一点?谢谢

4

3 回答 3

1

这里看起来有点XY 问题。您的表达式正在根据SWITCH语句为单元格着色。要解决求和问题,您需要使用用于为单元格着色的相同条件语句。基本上,您需要的表达式应该如下。

= SUM(IIF(Fields!SLA.Value<now(), Fields!count_of_value.Value, 0), "DataSet1")

此表达式应隔离与SWITCH红色相同的字段,对它们求和,如果它们的计算结果不为真,则添加零。由于您对另一个答案的评论表明您收到指示范围不足的错误,因此您需要在SUM函数中包含数据集名称。

至于从另一列获取最后一个日期值,您应该只能使用类似的表达式但使用MAX函数。

=MAX(IIF(Fields!SLA.Value<now(), Fields!SLA.Value, Nothing), "DataSet1")
于 2019-05-14T17:02:49.370 回答
0

您的 IIF 语句基本上只是说“如果 'Red' = True”,它将始终返回 false。

您需要将其与具有颜色表达的“单元格”进行比较。

如果调用该单元格,myTextBox那么您的 SUM 表达式将类似于(简化)

=SUM(
    IIF(ReportItems!myTextBox.Value = "Red", Fields!count_of_value.Value, 0)
    )

或者,您可以在 IIF 语句中重复整个颜色表达式。

如果这没有帮助,请编辑您的问题以显示报告设计的图像,包括任何分组和每个表达式的位置。

于 2019-05-14T07:55:42.903 回答
0

也许我过度简化了您的问题陈述,但我尝试在本地机器上使用虚拟数据。

在此处输入图像描述

=DateDiff(DateInterval.Hour,Fields!SLAValue.Value,now)

新的临时列来捕获数字

=IIF(DateDiff(DateInterval.Hour,Fields!SLAValue.Value,now)<=72,0,
IIF(Fields!SLAValue.Value<now,DateDiff(DateInterval.Hour,Fields!SLAValue.Value,now),0))

现在专栏

=now

颜色列表达式

=IIF(DateDiff(DateInterval.Hour,Fields!SLAValue.Value,now)<=72,"White",
IIF(Fields!SLAValue.Value<now,"Red","white"))

最后一个 Count_Value 表达式

=Sum(
IIF(DateDiff(DateInterval.Hour,Fields!SLAValue.Value,now)<=72,0,
IIF(Fields!SLAValue.Value<now,DateDiff(DateInterval.Hour,Fields!SLAValue.Value,now),0)))
于 2019-05-14T11:05:56.467 回答