Страницы: 1
RSS
Макрос на раскраску переменных, в зависимости от их значения
 
Добрый вечер!

Подскажите, пожалуйста, как решить следующую задачу:
Необходимо, создать следующее условие:
Если значения внутри ячейки меньше столбца "E" - красный (22)
Если в диапазоне от "Е" до "F" - желтый (44)
Если больше "F" - зеленый (50)

Не могу понять как написать, чтобы красились значения столбца "D" (выделил на скрине)

Использую макрос - он позволяет красить столбцы "B" и "С", а значение из столбца "D" не получается

Помогите, пожалуйста!
Изменено: karenolk - 16.05.2020 22:21:40
 
karenolk, так запишите макрос рекордером и увидите..я так понимаю вы определенные хотите точки? или все?
Не бойтесь совершенства. Вам его не достичь.
 
Mershik, спасибо за такой оперативный ответ.
Мне нужны все точки. Зачастую их бывает на порядок больше, по этому тут нужна автоматизация

Честно сказать, я только начинаю осваивать макросы, этот делал по шаблону, по этому если вы напрямую укажите на ошибку, либо что необходимо изменить - буду благодарен!
 
karenolk, самое простое
Код
Sub Макрос1()
k = Cells(Rows.Count, 1).End(xlUp).Row - 1
For i = 1 To k
    ActiveChart.FullSeriesCollection(1).Points(i).DataLabel.Select
    With Selection.Format.Fill
        .Visible = msoTrue
        .ForeColor.ObjectThemeColor = msoThemeColorAccent4
        .ForeColor.TintAndShade = 0
        .ForeColor.Brightness = 0
        .Transparency = 0
        .Solid
    End With
Next i
End Sub
Не бойтесь совершенства. Вам его не достичь.
 
В моем случае необходима привязка к условию: красится в красный - если значения меньше "х" , красится в желтый, если значения от "х" до "y" и зеленым если больше "х"

А в коде, который вы прислали мы просто красим - либо я не понял
 
karenolk,  у вас конкретно ничего нет и просто написано
Цитата
karenolk написал:
макрос, чтобы красились значения столбца "D"
все..что вы удосужились вложить...так что какой вопрос такой ответ.

да и ваш макрос у меня выдает ошибку
Изменено: Mershik - 16.05.2020 21:42:19
Не бойтесь совершенства. Вам его не достичь.
 
Сформулировал вопрос более четко, помогите решить проблему, пож

Также, перезалил макрос - хоть он и выдает ошибку - функции он исполняет, покрасил столбец на основании условия
 
Цитата
karenolk написал:
если значения меньше "х" , красится в желтый, если значения от "х" до "y" и зеленым если больше "х"
что за значения?
Не бойтесь совершенства. Вам его не достичь.
 
Если меньше столбца "E" - красный (22)
Если в диапазоне от "Е" до "F" - желтый (44)
Если больше "F" - зеленый (50)
 
karenolk,  не понимаю как вы получаете цвета красный 22 и так далее...
Код
Sub Change_color()
'до 44% - черный
'от 45 до 64 - красный
'от 65 до 84 - желтый
'от 85 до 100 - зеленый
    Dim li As Long, oChrt As ChartObject, oPoint As Point, oPoint2 As Point, lColor As Long
    'назначаем переменной значение "Диаграммы 2" для более удобного обращения к диаграмме
    Set oChrt = ActiveSheet.ChartObjects("Диаграмма 1")
    'отключаем обновление экрана, чтобы не мелькало
    Application.ScreenUpdating = 0
    'идем циклом по столбцам(от 1 до 12)
    For li = 2 To 11
    'проверяем значение ячеек(т.к. данные в ячейках в процентах - умножаем на 100)
        Select Case Cells(li, 2) * 100
        'если меньше 45 - окрашиваем в черный(и т.д. - условия описаны выше)
        'присваиваем переменной lColor значение в зависимости от значения в ячейке
        'чтобы затем одной строкой поменять цвет ряда на диаграмме
        Case Is < Cells(li, 4) * 100
            lColor = 22
        Case Cells(li, 4) * 100 To Cells(li, 5) * 100
            lColor = 44
        Case Is > Cells(li, 5) * 100
            lColor = 50
        End Select
        'назначаем переменной oPoint значение определенного ряда диаграммы
        Set oPoint = oChrt.Chart.SeriesCollection(1).Points(li - 1)
        'меняем цвет
        oPoint.Interior.ColorIndex = lColor
        
'Если меньше столбца "E" - красный (22)
'Если в диапазоне от "Е" до "F" - желтый (44)
'Если больше "F" - зеленый (50)

        If Cells(li, 4) < Cells(li, 5) Then
            lColor2 = 3
        ElseIf Cells(li, 4) >= Cells(li, 5) And Cells(li, 4) < Cells(li, 6) Then
            lColor2 = 6
        Else
            lColor2 = 4
        End If
        oChrt.Chart.SeriesCollection(3).Points(li - 1).DataLabel.Interior.ColorIndex = lColor2
        
        
        
    Next li 'следующая ячейка в цикле
    'возвращаем обновление экрана - обязательно
    Application.ScreenUpdating = 1
End Sub
Изменено: Mershik - 16.05.2020 22:31:14
Не бойтесь совершенства. Вам его не достичь.
 
Спасибо большое!

Спокойной ночи!
 
Цитата
karenolk написал:
Макрос на раскраску переменных
Никогда не слышал, чтобы красили переменные.
 
перекрасить и перебить номера - это более надежный способ
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
Страницы: 1
Наверх