Excel:在单元格格式中使用公式

Excel:在单元格格式中使用公式

有没有办法使用公式作为单元格格式?

据我所知,条件格式仅允许根据某些条件应用静态格式。我希望格式本身是动态的。例如,我想将单元格的颜色设置为其内容(如果单元格值为“红色”,则使用红色作为颜色),而不为每种颜色设置条件格式规则。

我知道这可以用宏来完成,但我不想在每次单元格更改后运行宏。

答案1

我不相信存在这样的公式,条件格式管理器中也没有选项。

不过,您可以使用 VBA。这里有一个小函数可以帮助您入门:

Private Sub Worksheet_Change(ByVal Target As Range)

Application.EnableEvents = False

'Do nothing if more than one cell is updated, or if cell contents are deleted
If Target.Cells.Count > 1 Or IsEmpty(Target) Then
    Exit Sub
End If

Select Case LCase(Target.Value)
    Case "red"
        newcolor = RGB(255, 0, 0)
    Case "blue"
        newcolor = RGB(0, 0, 255)
    Case "chartreuse"
        newcolor = RGB(0, 255, 0)
    Case "lavender"
        newcolor = RGB(224, 176, 255)
    Case Else
        newcolor = Target.Interior.Color
End Select

Target.Interior.Color = newcolor
Application.EnableEvents = True

End Sub

使用方法:

  1. Alt+ F11
  2. 在项目资源管理器(左侧面板)上,双击您想要应用格式的工作表。
  3. 将代码粘贴到窗口中。

该子程序将自动执行:

  • 当你在上面输入“红色”、“蓝色”、“黄绿色”或“薰衣草色”时任何该特定工作表中的单元格
  • 当公式任何单元格返回“红色”、“蓝色”、“黄绿色”或“淡紫色”

当您需要为任何单元格着色时,无需手动运行该函数。

您还可以通过更改 IF 块中的条件来限制此函数将“操作”的单元格。例如,要对列中的单元格进行着色C只是,你可以将上面的 IF 块更改为 ff:

If Target.Cells.Count > 1 Or Target.Column <> 3 Then
    Exit Sub
End If

当然,您必须将工作簿保存为启用宏的文档。

答案2

据我所知,如果没有为每种颜色添加条件格式,你就无法在没有宏的情况下做到这一点。好的一面是,为你使用的每种颜色制作一个条件格式不会花很长时间,我认为这是一个 5 分钟的过程。

答案3

我同意另一位发帖人的观点,你可能需要使用宏。你不必每次都手动运行宏,因为你可以将其分配给SheetChange事件。

单击VBE 中Microsoft Excel Objects的文件夹VBA Project,然后双击ThisWorkbook以生成代码存根。选择Worksheet左侧的,然后选择SheetChange右侧的。

在此处输入图片描述

在此处输入图片描述

碰巧我链接的示例使用此事件来控制单元格的颜色(您必须更新代码以使用字符串"red""green""blue"不是带有数值的 case 语句。

相关内容