Excel电子表格中的多个单元格背景颜色

问题描述:

Excel在格式菜单下有一个条件格式选项,允许您根据其值更改样式/颜色/字体/任何单元格。但它只允许三个条件。Excel电子表格中的多个单元格背景颜色

如何根据单元格的值让Excel显示说,六种不同的背景单元格颜色? (如果值为“红色,请将单元格设为红色,如果为”蓝色“,则将单元格设为蓝色)

您需要在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 

Excel 2007中允许多于三个条件。引用自this Microsoft page

编辑:啊,在链接代码中有一个“功能”:在括号中引用的括号中的处理不正确。这种联系是:http://msdn.microsoft.com/en-us/library/bb286672(office.11).aspx

在Excel 2007中 是指定超过 三个条件,重新排序 条件,并有一个以上的 条件决心的能力改变 条件格式的其他好处真正。

否则。恐怕你被描述的那些杂乱的选择所困住。

您可以使用VBA宏来做到这一点...

这里是一个VBA宏,如果需要大量的病例,可能是更好的 http://chandoo.org/wp/2008/10/14/more-than-3-conditional-formats-in-excel/

你需要的方式来预格式化“N”细胞你想格式化你的整个范围。然后使用该网址中的宏来获得效果。

把它放在VBA项目的模块中。然后,您可以在工作表中突出显示一个范围,然后从“工具”(Tools)>“宏”(Macro)>“宏”(Macro)菜单项中运行子工具,以在选定范围内对每个单元格着色

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函数来测试,以便忽略单元格中意外的前导/尾随空格:)