Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Функция Excel VBA для возврата True или False на основе цветов фона ячейки в диапазоне

Автор вопроса: Ryan BОтветов: 1

Я веду таблицу своего графика на работе и когда я встречаюсь и ожидаю достижения определенных вех. Данные (даты) хранятся слева направо, и каждый проект имеет свою собственную строку. Вехи устанавливаются постоянно и занимают диапазон (O:AA). Мои данные имеют цветовую маркировку: зеленый (завершено), оранжевый (крайний срок), синий (не работает), красный (неприменимо).

Я хотел бы написать функцию, которая проверяла бы, содержит ли ячейка фон оранжевого цвета (индекс цвета 6), и возвращала бы TRUE или FALSE на основе этого. В основном я хочу объединить все сроки по всем столбцам. В конце концов я хотел бы также интегрировать проверку даты, чтобы я мог видеть, какие сроки приближаются.

Function ScanForColor(Dates As Range) as Boolean
    If ScanForColor.Interior.ColorIndex = 6 Then
        ScanForColor = True
    Else
        ScanForColor = False
End Function

Я хотел бы вызвать функцию в ячейке, например =ScanForColor(O3:AA3), и у меня будет функция ScanForColor в столбце AB для хранения значений для фильтрации документа.

  • Не проще ли вместо этого ввести один из четырех кодов в каждую ячейку? Таким образом, вы можете использовать обычные формулы рабочей книги для агрегирования. Вы по-прежнему можете изменять цвет фона, используя условное форматирование - условные форматы для трех состояний и цвет ячейки по умолчанию для четвертого. Tim Robinson 28.07.2010

colorsfunctionsortingexcelrange

Ответы

Ответ 1 · рейтинг 9 · Graeme

Что-то вроде этого поможет!

Function ScanForColor(Cells As Range, ColorValue As Integer) As Boolean
    Dim cell As Range
    For Each cell In Cells
        If cell.Interior.ColorIndex = ColorValue Then
            ScanForColor = True
            Exit For
        End If
    Next
End Function

Это позволит вам вызывать и тестировать различные значения цвета....

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы