5

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

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

4

4 回答 4

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
于 2008-11-06T16:14:19.350 回答
3

Excel 2007 允许三个以上的条件。引用此 Microsoft 页面

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

Excel 2007 中条件格式更改的其他好处是能够指定三个以上的条件、重新排序条件以及将多个条件解析为 True。

除此以外。恐怕您会陷入所描述的混乱替代方案中。

于 2008-11-06T16:50:54.597 回答
2

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

于 2008-11-07T22:03:45.823 回答
0

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

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

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

于 2008-11-07T00:33:56.597 回答