【发布时间】:2015-08-24 05:43:52
【问题描述】:
【问题讨论】:
标签: excel conditional-formatting vba
【问题讨论】:
标签: excel conditional-formatting vba
如果我理解正确的话,我一直在与同样的问题作斗争。即根据一列中的值格式化整行,其中值已通过 Excel 的色标进行格式化。
我发现这个真正可笑简单的解决方法,包括将您的颜色缩放单元格复制到 word 中,然后返回到 excel 中,之后您可以删除这些值并将它们替换为任何内容在不改变格式的情况下你想要的值:
所有功劳归用户 Raystafarian
【讨论】:
我在 Mrexcel 的 post 中找到了 Range.DisplayFormat.Interior.Color 的一处房产。使用此属性,我能够获得有条件格式单元格的颜色并将其用于其他行。抓住的是,它只适用于 2010 年以后的 Excel。我有 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
【讨论】:
确实,您不需要 VBA 来执行此操作。
这里要记住的一件事是,您将无法使用单一的条件格式规则来实现您想要的行为;对于每个基于销售的行颜色定义,您必须有一个单独的规则。第二件事:我发现在 Excel 中使用命名范围作为规则而不是常规公式更容易实现所需的条件格式行为。
考虑到这些问题,请按照以下步骤创建命名范围,然后创建条件格式规则。
Formulas->Name Manager 来执行此操作。然后选择New..。在Name: 中输入SALES,在Refers to: 中输入=$XN,其中X 是第一个销售单元格的列,N 是行号。点击Enter。Home->Conditional Formatting->New Rule...
Use a Formula to Determine Which Cells to Format并输入=SALES=number,其中数字是您希望触发颜色的销售编号Format 和Fill 选项卡。现在您需要为您选择的销售编号确定您想要的背景颜色。您还可以选择其他格式选项,例如字体颜色等。=SALES<number(=AND(SALES<=CEILING, SALES>=FLOOR),其中上限和下限是上限和下限。如果您想要“所有销售额大于 X”的颜色,您可以使用 =SALES>number。编辑:
要使输入条件公式更容易一些,您可以使用“如果为真则停止”功能。转到Home->Conditional Formatting->Manage Rules,然后在下拉菜单中选择This Worksheet。现在您将看到适用于您的工作表的所有规则的列表,并且每个规则的右侧都会有一个“如果为真则停止”复选框。
对于每个行颜色规则,勾选“如果为真则停止”复选框。现在您的公式可以是这样的(仅作为示例):
=Sales>25 绿色规则 =Sales>10 黄色规则=Sales>0 代表红色规则等等,而不是像这样:
=AND(Sales>0,Sales<=10) 代表红色规则=AND(Sales>10,Sales<=25) 黄色规则=Sales>25 绿色规则 Stop If True 框意味着一旦将格式规则应用于单元格,该单元格将不会根据适用于它的任何其他规则再次格式化。请注意,这意味着在使用 Stop If True 时,规则的顺序很重要。
【讨论】:
您可以使用标准条件格式菜单执行此操作,无需 VBA。您可以选择指定自己的公式的选项,并且可以引用除要突出显示的单元格之外的单元格(用“$”锁定列)。
【讨论】:
我想我已经找到了解决方案。对于行中所有单元格的任何数字范围,我可以实现 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 必须为所有条件打勾,条件必须按顺序从最小步长到最大步长排序。
【讨论】: