【问题标题】:How to set cell color based on another cell color如何根据另一个单元格颜色设置单元格颜色
【发布时间】:2022-04-23 05:04:19
【问题描述】:

抱歉,我是 MS Excel 的新手。

如果单元格 G1 为绿色,我想将单元格 A1 颜色设置为红色

同时

如果单元格 F1 不为空,我想将单元格 A1 颜色设置为黄色

如果有两条规则为真,则优先级应为第二条。如果没有规则为真,则不应对单元格进行任何操作。

怎么做?

【问题讨论】:

    标签: excel


    【解决方案1】:

    您熟悉 VBA 吗?您可以使用下面的代码。如果您不熟悉 VBA,请使用条件格式选项。

    条件格式:

    1. 标记单元格 A1。
    2. 转到条件格式 -> 新规则
    3. 使用公式确定要格式化的单元格
    4. 插入您的公式(例如“=F1="")(这将检查 f F1 没有值)
    5. 在下方选择您想要的格式(例如颜色等)
    6. 点击“确定”确认您的选择

    VBA: 您可以使用

    激活单元格
     Range("A1")
    

    每个单元格都有几个参数,例如颜色或值,您可以读取和编辑这些参数。

     Range("A1").Value 'Value
     Range("A1").Interior.ColorIndex 'Color of cells
    

    满足您要求的代码可能如下所示

     If Range("G1").Interior.ColorIndex = 4 then  '4 = color code for green
        Range("A1").Interior.ColorIndex = 3       '3 = color code for red
     End If
    
     If (Range("F1").Value = 0 Then
        Range("A1").Interior.Colorindex = 6  '6 = color code for yellow
     End If
    

    您可以在这里找到颜色代码:Microsoft Docs Color Codes

    【讨论】:

    • 谢谢!是否可以设置一旦 G1 和 F1 中的数据发生变化,A1 列下的所有单元格(A2、A3 ... An)都会改变颜色?还是我每次都需要手动运行?
    • 是的,当然。您使用条件格式还是 VBA 方法?对于条件格式,您可以只标记整个列并将公式用于第一个单元格。 Excel 将自动假定您指的是同一行中的所有其他行的单元格。对于 VBA 方法,我建议使用 for 循环。
    • 非常感谢!
    【解决方案2】:

    您需要使用 VBA 代码来触发第一条规则,因为条件格式不会影响其他单元格的颜色。 新手指南:

    1. 按 Alt+F11 以打开 VBA 代码编辑器窗口(对于我认识的新手来说,这看起来很可怕!)
    2. 在左侧的窗口中,您需要选择您的工作表 - 它将位于标题为“项目”的窗口中,您可能需要展开“VBAProject(filename)”,然后展开“Microsoft Excel 对象”。查找工作表名称。
    3. 现在顶部应该有 2 个下拉框,分别表示“一般”和“声明”。您需要将“general”更改为“Worksheet”,将“declarations”更改为“SelectionChange”(可能会自动执行此操作),然后会出现一些代码 - 两行显示“sub”的开始和结束。每次在工作表(但不是任何其他工作表)中选择一个新单元格时,您在这些行之间粘贴的任何代码都会运行。
    4. 在这两行之间粘贴以下代码:
    If ThisWorksheet.Range("F1").Value <> "" Then
        ThisWorksheet.Range("A1").Interior.Color = vbYellow
    ElseIf ThisWorksheet.Range("G1").Interior.Colour = vbGreen Then
        ThisWorksheet.Range("A1").Interior.Colour = vbRed
    End If
    
    
    1. 关闭代码编辑器并测试一下!

    请记住,它正在检查 G1 是否为 vbGreen - Excel 非常严格,这不会触发任何绿色阴影。测试它,看看它是否有效。

    【讨论】:

    • 如果您之前实际使用过 VBA,那么对于居高临下的指南深表歉意!希望它可以帮助其他人 - 我只是不想做出任何假设。
    • 非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-15
    • 1970-01-01
    • 1970-01-01
    • 2019-03-20
    相关资源
    最近更新 更多