有没有办法使用公式作为单元格格式?
据我所知,条件格式仅允许根据某些条件应用静态格式。我希望格式本身是动态的。例如,我想将单元格的颜色设置为其内容(如果单元格值为“红色”,则使用红色作为颜色),而不为每种颜色设置条件格式规则。
我知道这可以用宏来完成,但我不想在每次单元格更改后运行宏。
答案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
使用方法:
- 按Alt+ F11。
- 在项目资源管理器(左侧面板)上,双击您想要应用格式的工作表。
- 将代码粘贴到窗口中。
该子程序将自动执行:
- 当你在上面输入“红色”、“蓝色”、“黄绿色”或“薰衣草色”时任何该特定工作表中的单元格
- 当公式任何单元格返回“红色”、“蓝色”、“黄绿色”或“淡紫色”
当您需要为任何单元格着色时,无需手动运行该函数。
您还可以通过更改 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 语句。