Страницы: 1
RSS
Условное форматирование с несколькими условиями
 
Добрый день.

Есть реестр с задачами и сроком их выполнения. Необходимо задать 3 условных форматирования для разного закрашивания строк:
1) зелёный цвет - статус задания "выполнено";
2) жёлтый цвет - статус "не выполнено" и срок задания ещё не истёк;
3) красный цвет - статус "не выполнено" и срок задания истёк.

Также нужно, чтобы при добавлении новых строк сверху правила сохранялись и для них.
 
Здравствуйте Kalitva1703,
Вы главное определитесь с форматом в столбце Срок и всё наладится.
 
Muxa K, у меня стоит формат "дата". Сейчас ещё раз это проверил
 
Цитата
Kalitva1703 написал:
Сейчас ещё раз это проверил
У Вас в конце даты стоит пробел и г. а где-то нет.
Просто посмотрите на мой вариант.
Ну, и формулы УФ тоже переделал.
 
Цитата
написал:
Ну, и формулы УФ тоже переделал.
Я тоже смысла "ЕСЛИ" не понял
 
Muxa K, понял, спасибо. А как сделать, чтобы правило применялось автоматически для строк, добавляемых сверху?
 
Цитата
Kalitva1703 написал:
чтобы правило применялось автоматически для строк, добавляемых сверху?
А зачем добавлять сверху?
Добавляйте ниже сколько Вам нужно.
У Вас правила работают до 422 строки.
Если мало, то измените диапазон правил до нужного интервала.
 
Muxa K, нужно, чтобы свежие задачи были сверху
 
Цитата
Kalitva1703 написал:
чтобы свежие задачи были сверху
Тут я думаю либо сводная либо VBA. Если формулами то придётся делать дополнительный лист.
Изменено: Muxa K - 01.06.2024 08:35:34
 
Muxa K, понял, спасибо за помощь
 
Цитата
написал:
А как сделать, чтобы правило применялось автоматически для строк, добавляемых сверху?
Вставляйте строки через копирование. Скопируйте строку, содержащую форматирования. Вставьте нужное количество строк. Замените значения на новые. Условное форматирование сохранится.
 
Код
Sub Вставить_строки()
    Dim nn As Long
    On Error Resume Next
    nn = InputBox("Количество строк", "Добавить строки", 1)
    On Error GoTo 0
    If nn = 0 Then Exit Sub
    
    Rows("2:2").Copy
    Rows("2:2").Resize(nn).Insert Shift:=xlDown
    With Cells(2, 1).Resize(nn)
        .Columns("A:A").ClearContents
        .Columns("A:A").Merge
        .Columns("B:B").Value = GetSequentialArray(nn)
        .Columns("C:E").ClearContents
        .Columns("F:F").Value = "не выполнено"
        .Columns("G:G").Value = "-"
        
        With .Columns("A:G")
            With .Borders(xlInsideHorizontal)
                .LineStyle = xlContinuous
                .ColorIndex = 0
                .TintAndShade = 0
                .Weight = xlThin
            End With
            With .Borders(xlEdgeBottom)
                .LineStyle = xlContinuous
                .ColorIndex = 0
                .TintAndShade = 0
                .Weight = xlMedium
            End With
        End With
    End With
    
End Sub

Private Function GetSequentialArray(nn As Long) As Variant
    Dim arr As Variant
    ReDim arr(1 To nn, 1 To 1)
    
    Dim ya As Long
    For ya = 1 To nn
        arr(ya, 1) = ya
    Next
    
    GetSequentialArray = arr
End Function
Изменено: МатросНаЗебре - 03.06.2024 10:27:44
 
МатросНаЗебре, спасибо большое
Страницы: 1
Наверх