Цвета нескольких ячеек в таблицах Excel - PullRequest
5 голосов
/ 06 ноября 2008

В Excel есть опция «Условное форматирование ...» в меню «Формат», которая позволяет изменять стиль / цвет / шрифт / любой элемент ячейки в зависимости от ее значения. Но это допускает только три условия.

Как заставить Excel отображать, скажем, шесть разных цветов фона в зависимости от значения ячейки? (IE сделать ячейку красной, если значение равно «Red», и синим, если «Blue» и т. Д.)

Ответы [ 4 ]

7 голосов
/ 06 ноября 2008

Вам нужно что-то написать в VBA.

См. Пример здесь: Обойти Excels 3 Предел критериев в условном форматировании :

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
3 голосов
/ 06 ноября 2008

Excel 2007 допускает более трех условий. Цитирование этой страницы Microsoft :

РЕДАКТИРОВАТЬ: Ах, в коде ссылки есть "особенность": скобки в ссылке, указанной в скобках, обрабатываются неправильно Эта ссылка: http://msdn.microsoft.com/en-us/library/bb286672(office.11).aspx

Другие преимущества изменений в условное форматирование в Excel 2007 есть возможность указать более три условия, чтобы изменить порядок условия, и иметь более одного преобразование условия в True.

В противном случае. Боюсь, вы застряли с беспорядочными альтернативами, как описано.

1 голос
/ 08 ноября 2008

поместите это в модуль в вашем проекте 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

EDIT: добавлена ​​функция Trim для выражения выражения case для проверки, так что случайные начальные / конечные пробелы в ячейках игнорируются:)

0 голосов
/ 07 ноября 2008

Для этого можно использовать макросы VBA ...

вот один макрос VBA, который может быть лучше, если нужно много случаев http://chandoo.org/wp/2008/10/14/more-than-3-conditional-formats-in-excel/

вам нужно предварительно отформатировать 'n' ячеек так, как вы хотите отформатировать весь диапазон. а затем используйте макрос в этом URL, чтобы получить эффект.

...