Добрый день! Прошу помочь с решением в написание макро кода. Задача в следующем, требуется сравнить значения диапазона Дельта со значением даиапазона КДО и, если значения Дельта окажется больше значения КДО (+) и меньше КДО (-), то ячейка окрашивается в красный цвет, иначе заливка не меняется. В моем коде диапазон Дельта сравнивается с первой ячейкой КДО. Правильно понимаю, что для сравнения множеств, следует воспользоваться функции offset? И как это работает?
Добрый день! Прошу помочь с решением в написание макро кода. Задача в следующем, требуется сравнить значения диапазона Дельта со значением даиапазона КДО и, если значения Дельта окажется больше значения КДО (+) и меньше КДО (-), то ячейка окрашивается в красный цвет, иначе заливка не меняется. В моем коде диапазон Дельта сравнивается с первой ячейкой КДО. Правильно понимаю, что для сравнения множеств, следует воспользоваться функции offset? И как это работает?boxingtmt
Sub sheet1_loop_1() Dim mydate As Date, r As Integer mydate = CDate(Range("A4")) KDO = Range("L5") For r = 5 To 35 If Abs(Range("F" & r)) > Abs(KDO) Then Range("G" & r).Interior.Color = 192 Else Range("G" & r).Interior.Color = 10092543 End If Next r End Sub
[/vba]
Но если всё-таки хотите с Each, то попробуйте так [vba]
Код
Sub sheet1_loop() Dim mydate As Date mydate = CDate(Range("A4")) KDO = Range("L5") For Each cell In Range("F5:F35") If Abs(cell.Value) > Abs(KDO) Then cell.Offset(0, 1).Interior.Color = 192 Else cell.Offset(0, 1).Interior.Color = 10092543 End If Next cell End Sub
[/vba] Оба макроса закрасят соседние ячейки
Я думаю так будет проще для понимания [vba]
Код
Sub sheet1_loop_1() Dim mydate As Date, r As Integer mydate = CDate(Range("A4")) KDO = Range("L5") For r = 5 To 35 If Abs(Range("F" & r)) > Abs(KDO) Then Range("G" & r).Interior.Color = 192 Else Range("G" & r).Interior.Color = 10092543 End If Next r End Sub
[/vba]
Но если всё-таки хотите с Each, то попробуйте так [vba]
Код
Sub sheet1_loop() Dim mydate As Date mydate = CDate(Range("A4")) KDO = Range("L5") For Each cell In Range("F5:F35") If Abs(cell.Value) > Abs(KDO) Then cell.Offset(0, 1).Interior.Color = 192 Else cell.Offset(0, 1).Interior.Color = 10092543 End If Next cell End Sub
[/vba] Оба макроса закрасят соседние ячейкиmsi2102
Должны раскрашиваться не соседние ячейки, если брать по модулю, а значения Дельта, которые больше КДО. При написании диапазона КДО, возникает ошибка. А нужно, чтобы значение Дельта каждой ячейки, сравнивалось со значением каждой ячейки КДО.
Должны раскрашиваться не соседние ячейки, если брать по модулю, а значения Дельта, которые больше КДО. При написании диапазона КДО, возникает ошибка. А нужно, чтобы значение Дельта каждой ячейки, сравнивалось со значением каждой ячейки КДО.boxingtmt
KDO = Application.Max(Range("L5:L35")) Такое пояснение говорит о том, что в диапазоне "L5:L35" будет браться только "Одно" максимальное значение и сравниваться со значением диапазона Дельта. Это не то. Код должен выглядить следующим образом: Ячейка ABS("F5") больше ячейки ABS("L5") если да то цвет красный иначе желтый Ячейка ABS("F6") больше ячейки ABS("L6") если да то цвет красный иначе желтый Ячейка ABS("F7") больше ячейки ABS("L7") если да то цвет красный иначе желтый Но как прописать вкратце, чтобы не расписывать каждую ячейку по отдельности.
KDO = Application.Max(Range("L5:L35")) Такое пояснение говорит о том, что в диапазоне "L5:L35" будет браться только "Одно" максимальное значение и сравниваться со значением диапазона Дельта. Это не то. Код должен выглядить следующим образом: Ячейка ABS("F5") больше ячейки ABS("L5") если да то цвет красный иначе желтый Ячейка ABS("F6") больше ячейки ABS("L6") если да то цвет красный иначе желтый Ячейка ABS("F7") больше ячейки ABS("L7") если да то цвет красный иначе желтый Но как прописать вкратце, чтобы не расписывать каждую ячейку по отдельности.boxingtmt