Страницы: 1
RSS
Изменение цвета нескольких ячеек в зависимости от значения в одной, Делаю макрос для таблицы
 
Добрый день! Подскажите, пожалуйста, есть вот такая таблица (прикрепляю). Там вводится счет - допустим 1:2. На основании счета ставится в ячейку значение 1 или 2, т. е. если счет 1:2 (проигрыш) - то одно очко, если 2:1 (выигрыш) - то два. В зависимости от этих очков вся ячейка становится зеленой или красной, это я сам сделал простой макрос.
Код
If Range("F3") = 1 Then
    Range("F2:H3").Font.Color = -16776961
    Else
        If Range("F3") = 2 Then
        Range("F2:H3").Font.Color = -11489280
        End If
End If

Что нужно: во-первых, таблицы могут быть какие угодно, и 8х8, и 5х5 - каждый раз вручную диапазоны вводить неправильно, конечно. Как сделать так, чтобы
диапазон "F2:H3" записать как-то в относительном виде, и тогда в макросе я смогу только поставить ячейки (F3, I3 и т. д.). Это уже упрощает намного всё.

И второй вопрос, как сделать чтобы это работало автоматически (я пока умею только кнопкой).
 
Vadeem,почему не используете условное форматирование?
 
Потому что, наверное, не знаю как это им сделать. Мне нужно чтобы именно определенный диапазон по значению определенной ячейки, и так 64 раза (в данной таблице). Возможно есть способ сделать это с условным форматированием, но я пока додумался только так
 
Vadeem,По поводу вопроса 1:
Код
Sub cell_color()
lrow = Cells(Rows.Count, 1).End(xlUp).Row + 1
lcol = Cells(1, Columns.Count).End(xlToLeft).Column + 2
Application.ScreenUpdating = False
For i = 3 To lrow Step 2
    For j = 3 To lcol Step 3
        If Cells(i, j) = 1 Then
            Range(Cells(i - 1, j + 2), Cells(i, j)).Font.Color = vbRed
        ElseIf Cells(i, j) = 2 Then
            Range(Cells(i - 1, j + 2), Cells(i, j)).Font.Color = vbGreen
        End If
    Next j
Next i
Application.ScreenUpdating = True
End Sub
По поводу вопроса 2 - можно повесить этот код на событие пересчета формул листа. Private Sub Worksheet_Calculate()
+Вариант на Условном форматировании можете посмотреть в прикреплённом файле
Изменено: Александр П. - 27.08.2018 05:52:33
 
Спасибо огромное! Это как раз то, что мне нужно. Думаю, для моего случая условного форматирования, действительно, достаточно (с макросом что-то у меня вообще не получилось сделать как вы написали..)
Подскажите, никак не могу понять в ссылке для УФ
Код
=ДВССЫЛ(АДРЕС(ЕСЛИ(ЕНЕЧЁТ(СТРОКА(A3));СТРОКА(A3);СТРОКА(A3)-1);ЦЕЛОЕ((СТОЛБЕЦ(A1)-1)/3)*3+3))="2"

вот эту конструкцию, что это?

Код
ЦЕЛОЕ((СТОЛБЕЦ(A1)-1)/3)*3+3)

Изменено: Vadeem - 27.08.2018 19:32:38
 
=OR(AND(D2=":";C3="2");AND(C2=":";B3="2");AND(B2=":";A3="2");AND(D1=":";C2="2"))
=OR(AND(D2=":";C3="1");AND(C2=":";B3="1");AND(B2=":";A3="1");AND(D1=":";C2="1"))
По вопросам из тем форума, личку не читаю.
 
Цитата
Vadeem написал:
с макросом что-то у меня вообще не получилось сделать как вы написали..
Смотрите в приложенном файле
Цитата
Vadeem написал:
что это? ЦЕЛОЕ((СТОЛБЕЦ(A1)-1)/3)*3+3)
вычисление номера столбца для функции АДРЕС
Лучше воспользуйтесь вариантом УФ от уважаемого БМВ, он меньше ресурсов требует и проще для понимания.
БМВ, Да, чего то я перемудрил, как обычно. Простые решения в голову почему то не приходят  :)  
Изменено: Александр П. - 28.08.2018 01:50:18
 
Большое спасибо за решения! Попробовал все, действительно способ, предложенный БМВ, наиболее понятен. Хотя и остальные тоже интересны с точки зрения изучения)  :)  
 
Цитата
Александр П. написал:
Простые решения в голову почему то не приходят
Порой сложные решения находят применения в других задачах, так что такие упражнения позволяют набивать руку. Я тоже часто ловлю себя на мысли что переусложнил, А иногда это даже забавно
По вопросам из тем форума, личку не читаю.
Страницы: 1
Наверх