Excel在“格式”菜单下有一个“条件格式...”选项,允许您根据其值更改单元格的样式/颜色/字体/任何内容。但它只允许三个条件。
如何让Excel显示六种不同的背景单元格颜色,具体取决于单元格的值? (如果值为“红色”,则使单元格为红色;如果为“蓝色”等,则为蓝色。)
答案 0 :(得分:7)
您需要在VBA中写一些东西。
请参见此处示例:Get Around Excels 3 Criteria Limit in Conditional Formatting:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim icolor As Integer
If Not Intersect(Target, Range("A1:A10")) is Nothing Then
Select Case Target
Case 1 To 5
icolor = 6
Case 6 To 10
icolor = 12
Case 11 To 15
icolor = 7
Case 16 To 20
icolor = 53
Case 21 To 25
icolor = 15
Case 26 To 30
icolor = 42
Case Else
'Whatever
End Select
Target.Interior.ColorIndex = icolor
End If
End Sub
答案 1 :(得分:3)
Excel 2007允许三个以上的条件。引自this Microsoft page:
编辑:啊,链接代码中有一个“功能”:括号中引用的链接中的括号未正确处理。该链接是:http://msdn.microsoft.com/en-us/library/bb286672(office.11).aspx
改变的其他好处 Excel 2007中的条件格式 是指定多于的能力 三个条件,重新排序 条件,并有多个 条件解析为真。
否则。你害怕上面描述的凌乱的替代方案,我很害怕。
答案 2 :(得分:1)
将它放在VBA项目的模块中。然后,您可以突出显示工作表中的范围,并从工具>运行子工作表。宏>宏菜单项为所选范围内的每个单元格着色。
Public Sub ColorCells()
Dim cell, rng As Range
Dim color As Integer
Dim sheet As Worksheet
Application.ScreenUpdating = False
Application.StatusBar = "Coloring Cells"
Set rng = Application.Selection
Set sheet = Application.ActiveSheet
For Each cell In rng.cells
Select Case Trim(LCase(cell))
Case "blue"
color = 5
Case "red"
color = 3
Case "yellow"
color = 6
Case "green"
color = 4
Case "purple"
color = 7
Case "orange"
color = 46
Case Else
color = 0
End Select
sheet.Range(cell.Address).Interior.ColorIndex = color
Next cell
Application.ScreenUpdating = True
Application.StatusBar = "Ready"
End Sub
如果用户在单元格中输入新的颜色名称,那么您可以将其放入VBA项目的工作表代码中,以便在用户将颜色名称输入单元格时为单元格着色
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.cells.Count > 1 Then Exit Sub
Dim color As Integer
Select Case Trim(LCase(Target))
Case "blue"
color = 5
Case "red"
color = 3
Case "yellow"
color = 6
Case "green"
color = 4
Case "purple"
color = 7
Case "orange"
color = 46
Case Else
color = 0
End Select
Target.Interior.ColorIndex = color
End Sub
编辑:在case语句表达式周围添加了Trim函数进行测试,以便忽略单元格中的意外前导/尾随空格:)
答案 3 :(得分:0)
您可以使用VBA宏执行此操作...
这里有一个vba宏,如果需要很多案例可能会更好 http://chandoo.org/wp/2008/10/14/more-than-3-conditional-formats-in-excel/
您需要按照您想要格式化整个范围的方式预格式化'n'单元格。然后使用该URL中的宏来获得效果。