Как раскрасить столбец, если определенные условия совпадают

#excel #vba

Вопрос:

Я хочу внедрить некоторую логику в свой планировщик, но на самом деле у меня нет знаний о том, как проверять значения в столбце. Что я хотел бы реализовать, так это проверять, существуют ли значения "F" и "S" существуют ли они хотя бы раз в день, в противном случае столбец должен быть окрашен. Кроме того , я хотел бы проверить, если значения "U" "SCH" и "ZA" не встречаются более 3 раз за данный день, в противном случае столбец снова должен быть окрашен.

Вот пример, если приведенного описания недостаточно:

введите описание изображения здесь

Легенда:

 F = early Shift,
S = late Shift,
U = Vacation,
ZA = compensatory time,
SCH = training
 

Комментарии:

1. используйте условное форматирование

2. Я пытался использовать условное форматирование, но мне не удалось сделать это самостоятельно.

3. Вы можете найти несколько учебных пособий здесь: google.com/search?q=excel условное форматирование как сделать . Счастливого обучения!

Ответ №1:

Поскольку Луук подслащен, попробуйте эту формулу в условном формате (отрегулируйте ее самостоятельно).:

 =OR(OR(COUNTIF(B:B,"F")<1,COUNTIF(B:B,"S")<1),(COUNTIF(B:B,"U") COUNTIF(B:B,"SCH") COUNTIF(B:B,"ZA"))>2)
 

Результат должен выглядеть так:

Результат

Ответ №2:

  • Идея кода состоит в том, чтобы установить диапазон вручную — Range("A1:P20") .
  • Затем с помощью вложенного цикла он проверяет значения каждой ячейки в диапазоне, если она является частью Array("U", "SCH", "ZA, "F", "S") .
  • Если это так, то столбец ячейки будет выделен желтым цветом с этой частью кода — myRange.Columns(myCell.Column).Interior.Color = vbYellow

 Sub ColorMe()

    Dim myRange As Range
    Set myRange = ThisWorkbook.Worksheets("Sheet1").Range("A1:P20")
    Dim myCell As Range
    
    Dim myArray As Variant
    myArray = Array("U", "SCH", "ZA", "F", "S")
    Dim myItem As Variant
    
    For Each myCell In myRange.Cells
        For Each myItem In myArray
            If myItem = UCase(Trim(myCell)) Then
                myRange.Columns(myCell.Column).Interior.Color = vbYellow
            End If
        Next
    Next myCell

End Sub
 

Используя приведенные выше пункты и свою бизнес-логику, вы можете ввести переменную, решая, должен ли столбец диапазона быть окрашен или нет.