条件格式或宏启用 - 根据另一个单元格值更改单元格背景颜色

时间:2016-08-29 12:41:53

标签: excel vba excel-vba

我有一个工作站库存清单,在单元格中有一个购买日期" D"我有细胞" I2" with = TODAY()。 Cell" E"公式为= ROUND(YEARFRAC(D3,$ I $ 2),0)以获得Cell" E"中的年份数值。

我的问题是关于细胞" F"我希望单元格根据单元格中的年数自动更改颜色,但是我很难这样做。使用条件格式或找到一个好的宏来执行此操作。

我附上了一个屏幕截图,让大家有更好的主意。在做我的研究时,我可能会错过一个类似的线索,但如果有人知道我在哪里可以看。这对我来说是一个很好的答案。 enter image description here

4 个答案:

答案 0 :(得分:3)

您可以使用常规条件格式:

选择" 使用公式确定要格式化的单元格" ,设置规则,如下面的屏幕截图(如果年>&1;年< = 3)。  enter image description here

将此公式应用于整个范围(不要忘记在行号前删除 $ 符号,以便它随行号更改)。 enter image description here

重复此步骤,为其他方案添加另外两个规则(使用公式的相同类型):

  1. (如果年份> 3且年龄<= 4)则为黄色。

  2. (如果年份> 5)则为红色。在您的帖子中,您在右侧的图例中写道:(年> 5),但在您要求的屏幕截图中,您实际上想要显示if(Years&gt; = 5)然后是Red。所以你需要决定你想要哪一个。

答案 1 :(得分:2)

选择ColumnF和HOME&gt;样式 - 条件格式,新规则...,使用公式确定要格式化的单元格格式化此公式的值:

=AND(ROW()>2,E1>4,E1<>"")

格式化... ,选择红色填充,确定确定

然后添加新规则:

=AND(ROW()>2,E1<5,E1<>"")  

黄色填充,最后是第三条规则(尽管您可以选择应用&#39;标准&#39;填充):

=AND(ROW()>2,E1<4,E1<>"")  

用相当奇怪的颜色填充。

[1]如果没有按上述顺序添加,则应在条件格式规则管理器窗口中重新排列,底部为红色,中间为黄色。
[2]对于所有三个规则(或至少前两个),检查停止是否为真 [3] 01 to 3 years在同一规则中涵盖 [4]为了简化范围选择和更新,所有规则都适用于整个列。这虽然复杂,但避免将格式应用于前两行以及任何在ColumnE中为空白的行。

答案 2 :(得分:1)

尝试以下条件,它对我有用。您需要在相同范围内应用三种不同的规则

=$K$5>=5 - Red
=AND($K$5<5,$K$5>3) -Yellow
=AND($K$5>=1,$K$5<=3) - Green

答案 3 :(得分:1)

我倾向于将条件格式限制为我将它们用于非常 FIXED 从不)进行更改/添加/删除/移动)单元格数

否则,在中/长期运行中,它可能导致工作表混乱(复制和粘贴和/或插入/删除单元格后)和尺寸增加

这就是为什么对于列表中的单元格着色我总是使用VBA方法,如下面的代码:

Option Explicit

Public Sub main()
    Dim cell As Range
    Dim firstColor As Long, secondColor As Long, thirdColor As Long

    With Worksheets("Inventory") '<--| change "Inventory" to your actual sheet name
        firstColor = .Range("I9").Interior.Color '<--| change "I9" to your actual cell address with "1st color"
        secondColor = .Range("I10").Interior.Color '<--| change "I10" to your actual cell address with "2nd color"
        thirdColor = .Range("I11").Interior.Color '<--| change "I11" to your actual cell address with "3rd color"
        For Each cell In .Range("E3", .Cells(.Rows.Count, "E").End(xlUp)).SpecialCells(XlCellType.xlCellTypeFormulas, xlNumbers) '<--| loop through column "E" from row 3 down to last non empty row cells with numbers deriving from formulas only
            cell.Offset(, 1).Interior.Color = Switch(cell.value <= 3, firstColor, cell.value <= 4, secondColor, cell.value > 4, thirdColor) '<--| adjust current cell adjacent one color according to current cell value
        Next cell
    End With
End Sub

注意:我调整了Switch()函数条件以匹配您的示例列“E”和“F”结果,这与“NO。Of Years”的结果略有不同 range legenda。此外,后者的前两个​​范围相互重叠

相关问题