【问题标题】:Multiple Cell Background Colors in Excel SpreadsheetsExcel 电子表格中的多个单元格背景颜色
【发布时间】:2010-09-21 02:54:30
【问题描述】:

Excel 在“格式”菜单下有一个条件格式...选项,可让您根据其值更改单元格的样式/颜色/字体/任何内容。但它只允许三个条件。

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

【问题讨论】:

    标签: excel formatting vba


    【解决方案1】:

    你需要用 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
    

    【讨论】:

      【解决方案2】:

      Excel 2007 允许三个以上的条件。引用this Microsoft page:

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

      更改的其他好处 Excel 2007 中的条件格式 是能够指定超过 三个条件,重新排序 条件,并且拥有多个 条件解析为 True。

      否则。恐怕你会被描述的混乱的替代方案困住。

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          【解决方案4】:

          您可以使用 VBA 宏来执行此操作...

          这是一个 vba 宏,如果需要很多案例,它可能会更好 http://chandoo.org/wp/2008/10/14/more-than-3-conditional-formats-in-excel/

          您需要使用您想要格式化整个范围的方式预先格式化“n”个单元格。然后使用该url中的宏来获得效果。

          【讨论】:

            猜你喜欢
            • 2017-09-14
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-05-19
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多