powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как изменять цвет ячеек по условию
15 сообщений из 15, страница 1 из 1
Как изменять цвет ячеек по условию
    #34256197
evshi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Надо:
если в ячейке значение от 0 до 10 - цвет зеленый
если в ячейке значение от 10 до 20 - цвет красный
...
если в ячейке значение от 90 до 100 - цвет черный

Пытался сделать с помощью условного форматирования, но там максимально можно сделать 3 условия. Как быть, подскажите?
...
Рейтинг: 0 / 0
Как изменять цвет ячеек по условию
    #34256451
srxp1154
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Посмотри тут:

http://www.sql.ru/forum/actualthread.aspx?tid=350862&hl=%f6%e2%e5%f2+%ff%f7%e5%e9%ea%e8
...
Рейтинг: 0 / 0
Как изменять цвет ячеек по условию
    #34257867
evshi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
srxp1154Посмотри тут:

http://www.sql.ru/forum/actualthread.aspx?tid=350862&hl=%f6%e2%e5%f2+%ff%f7%e5%e9%ea%e8

Посмотрел, к сожалению для меня осталось больше вопросов, чем ответов
Код, который приведен там:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$E$5" Then
If Target.Value = "40" Then
Range("K5:V5").Interior.Color = vbRed
ElseIf Target.Value = "60" Then
Range("K5:V5").Interior.Color = vbGreen
End If
End If
End Sub
Для моего случая не совсем подходит. Этот код, насколько я понял, делает следующее: если в ячейке $E$5 встречается значение 40 или 60, то изменяется цвет заданного диапазона ячеек.
Мне же надо следующее: есть большая таблица, в которой много колонок. Две из них (содержат процентные данные) формируются на основе четырех других. Мне надо, что бы цвет фона ячеек этих колонок изменялся бы в зависимости от значения ячеек. Значения следующие:
если значение от -100% до -50% или 50% до 100%, то красный цвет
если значение от -50% до -20% или 20% до 50%, то оранжевый цвет
если значение от -20% до -10% или 10% до 20%, то желтый цвет.

Пробовал адаптировать код под себя, но незнание visualbаsic сказывается - при изменении значения ячеек постоянно вылетает ошибка "несоответствие типов"
...
Рейтинг: 0 / 0
Как изменять цвет ячеек по условию
    #34257922
vbapro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim MyColor As Long

    If Not Intersect(Range("MyRng"), Target) Is Nothing Then
        If Target.Value >  0  And Target.Value <=  10  Then
            MyColor =  1 
        ElseIf Target.Value >  10  And Target.Value <=  20  Then
            MyColor =  2 
        ElseIf Target.Value >  20  And Target.Value <=  30  Then
            MyColor =  3 
        ElseIf Target.Value >  40  And Target.Value <=  50  Then
            MyColor =  4 
        End If
    End If
    Target.Interior.ColorIndex = MyColor
End Sub
дай название диапозону, где должно срабатывать это форматирование "MyRng", а код помести в код листа. Ну, и, конечно подправь под себя номера цветов и условия :)
...
Рейтинг: 0 / 0
Как изменять цвет ячеек по условию
    #34257934
vbapro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vbapro
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim MyColor As Long

    If Not Intersect(Range("MyRng"), Target) Is Nothing Then
        If Target.Value >  0  And Target.Value <=  10  Then
            MyColor =  1 
        ElseIf Target.Value >  10  And Target.Value <=  20  Then
            MyColor =  2 
        ElseIf Target.Value >  20  And Target.Value <=  30  Then
            MyColor =  3 
        ElseIf Target.Value >  40  And Target.Value <=  50  Then
            MyColor =  4 
        End If
    End If
    Target.Interior.ColorIndex = MyColor
End Sub
дай название диапозону, где должно срабатывать это форматирование "MyRng", а код помести в код листа. Ну, и, конечно подправь под себя номера цветов и условия :)



Target.Interior.ColorIndex = MyColor лучше внести в if:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim MyColor As Long

    If Not Intersect(Range("MyRng"), Target) Is Nothing Then
        If Target.Value >  0  And Target.Value <=  10  Then
            MyColor =  1 
        ElseIf Target.Value >  10  And Target.Value <=  20  Then
            MyColor =  2 
        ElseIf Target.Value >  20  And Target.Value <=  30  Then
            MyColor =  3 
        ElseIf Target.Value >  40  And Target.Value <=  50  Then
            MyColor =  4 
        End If
        Target.Interior.ColorIndex = MyColor
    End If
End Sub
...
Рейтинг: 0 / 0
Как изменять цвет ячеек по условию
    #34258030
evshi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vbapro vbapro
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim MyColor As Long

    If Not Intersect(Range("MyRng"), Target) Is Nothing Then
        If Target.Value >  0  And Target.Value <=  10  Then
            MyColor =  1 
        ElseIf Target.Value >  10  And Target.Value <=  20  Then
            MyColor =  2 
        ElseIf Target.Value >  20  And Target.Value <=  30  Then
            MyColor =  3 
        ElseIf Target.Value >  40  And Target.Value <=  50  Then
            MyColor =  4 
        End If
    End If
    Target.Interior.ColorIndex = MyColor
End Sub
дай название диапозону, где должно срабатывать это форматирование "MyRng", а код помести в код листа. Ну, и, конечно подправь под себя номера цветов и условия :)



Target.Interior.ColorIndex = MyColor лучше внести в if:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim MyColor As Long

    If Not Intersect(Range("MyRng"), Target) Is Nothing Then
        If Target.Value >  0  And Target.Value <=  10  Then
            MyColor =  1 
        ElseIf Target.Value >  10  And Target.Value <=  20  Then
            MyColor =  2 
        ElseIf Target.Value >  20  And Target.Value <=  30  Then
            MyColor =  3 
        ElseIf Target.Value >  40  And Target.Value <=  50  Then
            MyColor =  4 
        End If
        Target.Interior.ColorIndex = MyColor
    End If
End Sub


Спасибо, все работает, но только с целыми числами. А мне необходимо с процентами. Пробовал в коде менять, но VB автоматом их удаляет. Пробовал дробные числа ставить, начинает ругаться "Compile error"...
...
Рейтинг: 0 / 0
Как изменять цвет ячеек по условию
    #34258053
vbapro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если на листе процентный формат, то значение нужно делить на 100:
на листе 64%
.value = 0.64
...
Рейтинг: 0 / 0
Как изменять цвет ячеек по условию
    #34258330
evshi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vbaproесли на листе процентный формат, то значение нужно делить на 100:
на листе 64%
.value = 0.64

Спасибо большое. Я по невнимательности ставил запятую, поэтому были проблемы.

Vbapro, скажите, каким образом вы узнаете цвет по значению цифры в своей работе?
...
Рейтинг: 0 / 0
Как изменять цвет ячеек по условию
    #34258361
vbapro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
evshi vbaproесли на листе процентный формат, то значение нужно делить на 100:
на листе 64%
.value = 0.64

Спасибо большое. Я по невнимательности ставил запятую, поэтому были проблемы.

Vbapro, скажите, каким образом вы узнаете цвет по значению цифры в своей работе?
способов несколько, самый простой - включить макрорекордер и делать для разных ячеек разную заливку, там же, в ячейках, можно название указывать.
Второй способ через функцию RGB(R,G,B), или через константы (наберите в поиске помощи "Color Constants")
...
Рейтинг: 0 / 0
Как изменять цвет ячеек по условию
    #34258406
evshi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Еще такой вопрос:
Сейчас у меня уже есть готовая таблица со всеми значениями. Цвет ячейки перекрашивается, если только значение заново вбить, но у меня они уже вбиты. Что мне сделать, что бы ячейки закрасились уже на основе набитых данных?
...
Рейтинг: 0 / 0
Как изменять цвет ячеек по условию
    #34258435
vbapro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
evshiЕще такой вопрос:
Сейчас у меня уже есть готовая таблица со всеми значениями. Цвет ячейки перекрашивается, если только значение заново вбить, но у меня они уже вбиты. Что мне сделать, что бы ячейки закрасились уже на основе набитых данных?
можно в-лоб:
Код: plaintext
1.
2.
3.
4.
5.
Sub recolor()
Dim cell As Range
    For Each cell In Range("MyRng")
        Worksheet_Change cell
    Next cell
End Sub
...
Рейтинг: 0 / 0
Как изменять цвет ячеек по условию
    #34258491
evshi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vbapro evshiЕще такой вопрос:
Сейчас у меня уже есть готовая таблица со всеми значениями. Цвет ячейки перекрашивается, если только значение заново вбить, но у меня они уже вбиты. Что мне сделать, что бы ячейки закрасились уже на основе набитых данных?
можно в-лоб:
Код: plaintext
1.
2.
3.
4.
5.
Sub recolor()
Dim cell As Range
    For Each cell In Range("MyRng")
        Worksheet_Change cell
    Next cell
End Sub


Ругается, пишет "Нельзя установить свойство ColorIndex класса Interior":(
...
Рейтинг: 0 / 0
Как изменять цвет ячеек по условию
    #34258511
vbapro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а так:
Код: plaintext
1.
2.
3.
4.
5.
Sub recolor()
Dim cell As Range
    For Each cell In Range("MyRng")
        cell.Value = cell.Value
    Next cell
End Sub
...
Рейтинг: 0 / 0
Как изменять цвет ячеек по условию
    #34293341
evshi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vbaproа так:
Код: plaintext
1.
2.
3.
4.
5.
Sub recolor()
Dim cell As Range
    For Each cell In Range("MyRng")
        cell.Value = cell.Value
    Next cell
End Sub

В общем-то работает, но если я заполняю рядом расположенные ячейки через перетаскивание мышкой, то иногда вылетает ошибка:
"
Run-time error '13':

Type mismatch
"
Можно ли как-нибудь сделать, что бы окно с ошибкой не появлялось?
...
Рейтинг: 0 / 0
Как изменять цвет ячеек по условию
    #34294152
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rng As Range, c As Range
    
    On Error GoTo ExitSub
    Set rng = Intersect(Range("A1:A20"), Target)
    
    For Each c In rng
        Select Case c.Value
        Case  0 
            c.Interior.ColorIndex =  0 
        Case  0  To  0 . 1 
            c.Interior.ColorIndex =  1 
        Case  0 . 1  To  0 . 2 
            c.Interior.ColorIndex =  2 
        Case  0 . 2  To  0 . 3 
            c.Interior.ColorIndex =  3 
        Case  0 . 3  To  0 . 5 
            c.Interior.ColorIndex =  4 
        Case Else
            c.Interior.ColorIndex =  0 
        End Select
    Next c
    
ExitSub:
End Sub


KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как изменять цвет ячеек по условию
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]