条件格式 - 基于一列对整行进行颜色缩放

Conditional Formatting - Color Scale entire row based on one column

假设我想根据列中的值对完整行进行颜色缩放(使用excel 条件格式菜单中的内置颜色缩放选项)。我如何实现这一目标?请看下图

您可以使用标准条件格式菜单执行此操作,不需要 VBA。您选择指定您自己的公式的选项,并且您可以引用您想要突出显示的单元格以外的单元格(用“$”锁定该列)。

Background Reading

您不需要 VBA 来执行此操作,真的。

这里要记住的一件事是,您将无法通过单一的条件格式规则实现所需的行为;您必须为每个基于销售的行颜色定义制定单独的规则。第二件事:我发现在 Excel 中使用命名范围规则而不是常规公式更容易实现所需的条件格式设置行为。

考虑到这些问题,请按照以下步骤创建命名范围,然后创建条件格式设置规则。

  1. 首先,select 您 sheet 上的第一个销售单元(最上面一行)
  2. 接下来,为单元格命名,"SALES"。通过按 Ctl+F3 或功能区中的 select Formulas->Name Manager 来执行此操作。然后selectNew..。在 Name: 中输入 SALES,在 Refers to: 中输入 =$XN,其中 X 是第一个销售单元格的列,N 是行号。命中 Enter.
  3. 现在 select 您希望展示此行为的整个单元格范围
  4. Select Home->Conditional Formatting->New Rule...
  5. Select Use a Formula to Determine Which Cells to Format并输入 =SALES=number 其中数字是您希望触发颜色的销售数字
  6. Select FormatFill 选项卡。现在您需要决定您选择的销售编号的背景颜色。您还可以选择其他格式选项,例如字体颜色等。
  7. 点击确定,确定,确定。为您想要的每个不同的销售 figure/color 组合重复步骤 3 到 6。如果您想要 "all sales less than X" 的颜色,您将在规则中输入 =SALES<number(< 是 "less than";您也可以输入 <=,即 "less than OR equal to")。如果希望规则在两个数字之间时发生,您可以执行 =AND(SALES<=CEILING, SALES>=FLOOR),其中 ceiling 和 floor 是上限和下限。如果你想要 "all sales greater than X" 的颜色,你可以 =SALES>number.

编辑:

为了更轻松地输入条件公式,您可以使用 "Stop If True" 功能。转到 Home->Conditional Formatting->Manage Rules,然后在下拉菜单中选择 This Worksheet。现在您将看到适用于您的 sheet 的所有规则的列表,每条规则的右侧将有一个 "Stop If True" 复选框。

对于每行颜色规则,勾选 "Stop If True" 复选框。现在你的公式可以是这样的(只是为了举例):

  • =Sales>25 绿色规则
  • =Sales>10 黄色规则
  • =Sales>0 红色规则

等等,而不是像这样:

  • =AND(Sales>0,Sales<=10) 红色规则
  • =AND(Sales>10,Sales<=25) 黄色规则
  • =Sales>25 绿色规则

Stop If True 框表示一旦将格式设置规则应用到单元格,该单元格将不会根据适用于它的任何其他规则再次设置格式。请注意,这意味着使用 Stop If True.

时规则的顺序很重要

我在 post 先生 excel 处找到了一个 属性 Range.DisplayFormat.Interior.Color。使用此 属性 我能够获得条件格式单元格的颜色并将其用于其他行。问题是,它仅适用于 excel 2010 年以后。我有 excel 2010,所以它对我有用。 这是确切的代码 -

For i = rowStart To rowEnd
    For j = columnStart To columnEnd
        Cells(i, j).Interior.Color = Cells(i, 4).DisplayFormat.Interior.Color
    Next
Next

如果我对您的理解正确的话,我一直在为同样的问题而苦苦挣扎。即根据一列中的值格式化整行,其中值已通过 Excel 的色标进行格式化。

我发现这确实可笑 简单的解决方法,涉及将彩色缩放单元格复制到 word,然后返回到 excel之后您可以删除这些值并用您想要的任何值替换它们而不更改格式:

https://superuser.com/questions/973921/copy-conditional-formatting-3-color-scheme-to-another-tab/973974#973974?newreg=fc5ca6d04a5a406fa39cd4796b6a539e

全部归功于用户 Raystafarian

我想我已经找到了解决办法。我可以为行中所有单元格的任何数字范围实现 5 度的色阶,并且可以选择仅影响包含数据的单元格。

这是通过基于以下内容创建 5 个条件格式规则来实现的:

=AND(D4<>"",$D4<>"",($D4-(MIN($D:$D)-1))/(MAX($D:$D)-(MIN($D:$D)-1))*5<=2)

如果您只希望包含数据的单元格受到影响,则使用 AND 函数 D4<>"" 中的第一个参数,如果您希望对整行数据进行颜色编码,请将其删除。

第二个参数,$D4<>"" 指向包含要计算的值的行中的单元格 - 记住 $ 锁定列

第三个参数,$D4-(MIN($D:$D)-1))/(MAX($D:$D)-(MIN($D:$D)-1))*5<=2 评估值在整个值范围内的位置,并将其转换为 1 到 5 之间的数字,更改此参数末尾的 *5允许您在颜色序列中有更多步骤。您将需要相应地添加更多条件规则。 <=2 表示这是序列中的第二个颜色步骤。

颜色 3 和 4 使用相同的条件,但 <=2 分别更改为 <=3<=4

如果您始终希望范围内的最低编号为第一个色标,范围内的最高编号为最高编号的色标,则第一个和最后一个色标需要稍作修改。

对于范围内的最小数,调整如下:

=AND(D4<>"",$D4<>"",OR($D4=MIN($D:$D),($D4-(MIN($D:$D)-1))/(MAX($D:$D)-(MIN($D:$D)-1))*5<=1))

OR($D4=MIN($D:$D)的引入捕获范围

中的第一个数字

同样

=AND(D4<>"",$D4<>"",OR($D4=MAX($D:$D),($D4-(MIN($D:$D)-1))/(MAX($D:$D)-(MIN($D:$D)-1))*5<=5))

使用 OR($D4=MAX($D:$D) 捕获范围内的最大数

请注意,必须为所有条件勾选 Stop if True,并且条件必须按顺序从最小到最大步骤排序。

Image of Conditional Formatting Rules Manager