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

时间:2015-06-09 12:03:03

标签: excel excel-vba conditional-formatting vba

假设我想根据列中的值(使用条件格式菜单中的excel 内置色阶选项)对完整行进行着色。我该如何实现这一目标?请参阅下图 enter image description here

5 个答案:

答案 0 :(得分:6)

如果我理解正确的话,我一直在和同样的问题作斗争。这是根据一列中的值格式化整行,其中值已通过Excel的颜色标度格式化。

我发现这真正的 荒谬的 简单的解决方法,包括将颜色缩放的单元格复制到单词中,然后重新转换为excel,之后您可以删除这些值并将其替换为任何值您想要的值而不更改格式:

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

所有信用额用户Raystafarian

答案 1 :(得分:5)

我在Mrexcel的post找到了一个属性Range.DisplayFormat.Interior.Color。使用此属性,我能够获得有条件格式单元格的颜色,并将其用于其他行。 Catch是,它的工作仅优于2010年。我有优秀的2010年,所以它对我有用。 这是确切的代码 -

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

答案 2 :(得分:3)

你真的不需要VBA来做这件事。

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

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

  1. 首先,选择工作表上的第一个销售单元格(最上面一行)
  2. 接下来,给单元格命名," SALES"。通过按Ctl + F3执行此操作,或从功能区中选择Formulas - > Name Manager。然后选择New..。在Name:输入SALESRefers to:输入=$XN,其中X是第一个销售单元格的列,N是行号。点击Enter
  3. 现在选择您希望展示此行为的整个单元格范围
  4. 选择Home - > Conditional Formatting - > New Rule...
  5. 选择Use a Formula to Determine Which Cells to Format并输入=SALES=number,其中number是您希望触发颜色的销售数字
  6. 选择FormatFill标签。现在,您需要确定所选销售数量的背景颜色。您还可以选择其他格式选项,如字体颜色等。
  7. 点击OK,好的,好的。对所需的每种不同销售数据/颜色组合重复步骤3到6。如果您希望所有销售额低于X&#34;,则在您的规则中,您将输入=SALES<number(&lt; is&#34;小于&#34 ;;您也可以&#34; =,这是&#34;小于OR等于&#34;)。如果希望在两个数字之间发生规则,则可以执行=AND(SALES<=CEILING, SALES>=FLOOR),其中上限和下限是上限和下限。如果您希望所有销售额大于X&#34;的颜色,则可以=SALES>number
  8. 编辑:

    为了使条件公式更容易输入,您可以使用&#34; Stop If True&#34;特征。转到Home - &gt; Conditional Formatting - &gt; Manage Rules,然后在下拉菜单中选择This Worksheet。现在,您将看到适用于工作表的所有规则的列表,并且会出现一个&#34; Stop If True&#34;每个规则右侧的复选框。

    对于每个行颜色规则,请勾选&#34; Stop If True&#34;复选框。现在你的公式可以是这样的(仅举例):

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

    等等,而不是像这样:

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

    Stop If True框意味着一旦格式化规则应用于单元格,该单元格将不会再根据适用于它的任何其他规则进行格式化。请注意,这意味着使用Stop If True时规则的顺序很重要。

答案 3 :(得分:0)

您可以使用标准条件格式菜单执行此操作,无需VBA。您可以选择指定自己的公式,并且可以引用一个单元格(使用'$'锁定列)而不是要突出显示的单元格。

Background Reading

答案 4 :(得分:0)

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

这是通过根据以下内容创建5条条件格式设置规则来实现的:

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

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

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

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

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

如果您始终希望将范围中的最低编号作为第一个色标,而将范围中的最高编号作为最高的色标,则第一个和最后一个色标需要进行少量修改。

要获得该范围内的最小值,请进行以下修改:

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

引入OR($D4=MIN($D$4:$D$20)会捕获范围内的第一个数字

类似地

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

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

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

Image of Conditional Formatting Rules Manager