如何根据最小值和最大值在 SSRS 报告中添加 Excel-like "color scale" 红-黄-绿条件格式
How to Add Excel-like "color scale" red-yellow-green conditional formatting in SSRS report based on min and max values
如何根据最小值和最大值在 SSRS 中创建热图?
现在我正在使用 SWITCH 函数来区分颜色。
=
SWITCH
(Fields!.Value = 0, "Coral",
Fields!.Value >=1 and Fields!.Value <= 5 , "Yellow",
Fields!.Value >=6 and Fields!.Value <= 10 , "Gold",
Fields!.Value >= 11 and Fields!.Value <= 16,"#bdff30",
Fields!.Value >= 17 and Fields!.Value <= 22,"#7fda24",
Fields!.Value >= 55 ,"#0ca102")
但是我如何才能告诉 SSRS,例如在 5 个不同的值之间,选择热图颜色,假设从红色到绿色的阴影并将这些颜色分配给单元格中的每个值?
应该是这样的:
对于第一个:使用开关:它采用第一个正确的值:因此您无需编写 2 个条件来测试一个值。只需将它们从最大到最小。
例如:
=
SWITCH
(Fields!.Value >= 55 ,"#0ca102"
Fields!.Value >= 17 ,"#7fda24"
Fields!.Value >= 11,"#bdff30"
Fields!.Value >= 6,"Gold"
Fields!.Value >= 1,"Yellow"
1=1,"Coral")
要获得可能的值的最大值:使用函数 "MAX"(对于 MIN 也是如此)。不要忘记在这里引用所有数据集(在组的情况下)。因此,当您对所有数据集使用最大值时,它就像那样:
=Max(Fields!myField.Value, "DataSetName")
然后,您可以用 min 和 max 进行运算,然后替换您的固定值。但是我帮不了你了,因为我数学真的不好。
我认为您不需要编写代码。
我在想更多这样的事情:
=SWITCH
(Fields!.Value >= Min(Fields!myField.Value, "DataSetName") + (5 *((Max(Fields!myField.Value, "DataSetName")-Min(Fields!myField.Value, "DataSetName"))/6)) ,"#0ca102"
Fields!.Value >= Min(Fields!myField.Value, "DataSetName") + (4 *((Max(Fields!myField.Value, "DataSetName")-Min(Fields!myField.Value, "DataSetName"))/6)) ,"#7fda24"
Fields!.Value >= Min(Fields!myField.Value, "DataSetName") + (3 *((Max(Fields!myField.Value, "DataSetName")-Min(Fields!myField.Value, "DataSetName"))/6)),"#bdff30"
Fields!.Value >= Min(Fields!myField.Value, "DataSetName") + (2 *((Max(Fields!myField.Value, "DataSetName")-Min(Fields!myField.Value, "DataSetName"))/6)),"Gold"
Fields!.Value >= Min(Fields!myField.Value, "DataSetName") + ((Max(Fields!myField.Value, "DataSetName")-Min(Fields!myField.Value, "DataSetName"))/6),"Yellow"
1=1,"Coral")
以 5 到 60 的值为例,测试变为:
=SWITCH
(Fields!.Value >= 50.83 ,"#0ca102"
Fields!.Value >= 41.67,"#7fda24"
Fields!.Value >= 32.5,"#bdff30"
Fields!.Value >= 23.33,"Gold"
Fields!.Value >= 14.17,"Yellow"
1=1,"Coral")
我数学真的不好。也许(肯定)有更好的公式......
只是为了展示我想说的^^
使用百分比推导范围。
如何根据最小值和最大值在 SSRS 中创建热图? 现在我正在使用 SWITCH 函数来区分颜色。
=
SWITCH
(Fields!.Value = 0, "Coral",
Fields!.Value >=1 and Fields!.Value <= 5 , "Yellow",
Fields!.Value >=6 and Fields!.Value <= 10 , "Gold",
Fields!.Value >= 11 and Fields!.Value <= 16,"#bdff30",
Fields!.Value >= 17 and Fields!.Value <= 22,"#7fda24",
Fields!.Value >= 55 ,"#0ca102")
但是我如何才能告诉 SSRS,例如在 5 个不同的值之间,选择热图颜色,假设从红色到绿色的阴影并将这些颜色分配给单元格中的每个值?
应该是这样的:
对于第一个:使用开关:它采用第一个正确的值:因此您无需编写 2 个条件来测试一个值。只需将它们从最大到最小。 例如:
=
SWITCH
(Fields!.Value >= 55 ,"#0ca102"
Fields!.Value >= 17 ,"#7fda24"
Fields!.Value >= 11,"#bdff30"
Fields!.Value >= 6,"Gold"
Fields!.Value >= 1,"Yellow"
1=1,"Coral")
要获得可能的值的最大值:使用函数 "MAX"(对于 MIN 也是如此)。不要忘记在这里引用所有数据集(在组的情况下)。因此,当您对所有数据集使用最大值时,它就像那样:
=Max(Fields!myField.Value, "DataSetName")
然后,您可以用 min 和 max 进行运算,然后替换您的固定值。但是我帮不了你了,因为我数学真的不好。
我认为您不需要编写代码。 我在想更多这样的事情:
=SWITCH
(Fields!.Value >= Min(Fields!myField.Value, "DataSetName") + (5 *((Max(Fields!myField.Value, "DataSetName")-Min(Fields!myField.Value, "DataSetName"))/6)) ,"#0ca102"
Fields!.Value >= Min(Fields!myField.Value, "DataSetName") + (4 *((Max(Fields!myField.Value, "DataSetName")-Min(Fields!myField.Value, "DataSetName"))/6)) ,"#7fda24"
Fields!.Value >= Min(Fields!myField.Value, "DataSetName") + (3 *((Max(Fields!myField.Value, "DataSetName")-Min(Fields!myField.Value, "DataSetName"))/6)),"#bdff30"
Fields!.Value >= Min(Fields!myField.Value, "DataSetName") + (2 *((Max(Fields!myField.Value, "DataSetName")-Min(Fields!myField.Value, "DataSetName"))/6)),"Gold"
Fields!.Value >= Min(Fields!myField.Value, "DataSetName") + ((Max(Fields!myField.Value, "DataSetName")-Min(Fields!myField.Value, "DataSetName"))/6),"Yellow"
1=1,"Coral")
以 5 到 60 的值为例,测试变为:
=SWITCH
(Fields!.Value >= 50.83 ,"#0ca102"
Fields!.Value >= 41.67,"#7fda24"
Fields!.Value >= 32.5,"#bdff30"
Fields!.Value >= 23.33,"Gold"
Fields!.Value >= 14.17,"Yellow"
1=1,"Coral")
我数学真的不好。也许(肯定)有更好的公式...... 只是为了展示我想说的^^ 使用百分比推导范围。