Используйте цвет ячейки как условие в инструкции if (функция)

Я пытаюсь получить ячейку для выполнения функции на основе цвета hilight ячейки.

вот функция, которую я в настоящее время имею:

=IF(A6.Interior.ColorIndex=6,IF(ROUNDDOWN(IF(M6<3,0,IF(M6<5,1,IF(M6<10,3,(M6/5)+2))),0)=0,0,ROUNDDOWN(IF(M6<3,0,IF(M6<5,1,IF(M6<10,2,(M6/5)+2))),0)),IF(ROUNDDOWN(IF(M6<7,0,IF(M6<10,1,M6/5)),0)=0,0,ROUNDDOWN(IF(M6<7,0,IF(M6<10,1,M6/5)),0)))

просто, чтобы вам не пришлось читать все это, вот более простой пример

=IF(A6.Interior.ColorIndex=6,"True","False")

все что его возвращает это #NAME? . Есть ли способ сделать это как функцию в ячейке или VBA абсолютно необходим?

спасибо,

Джордан

5 ответов


вы не можете использовать VBA (Interior.ColorIndex) в Формуле, поэтому вы получаете ошибку.

это невозможно сделать без VBA.

Function YellowIt(rng As Range) As Boolean
    If rng.Interior.ColorIndex = 6 Then
        YellowIt = True
    Else
        YellowIt = False
    End If
End Function

однако я не рекомендую это: это не то, как пользовательские функции VBA (UDFs) предназначены для использования. Они должны отражать поведение функций Excel, которые не могут считывать цветовое форматирование ячейки. (Эта функция может не работать в будущих версиях Excel.)

гораздо лучше, что вы основываете a формула на первоначальное состояние (решение), которое делает ячейку Желтой в первую очередь. Или, альтернативно, выполните процедуру Sub для заполнения значений True или False (хотя, конечно, эти значения больше не будут связаны с форматированием исходной ячейки).


Я не верю, что есть какой-либо способ получить цвет ячейки из Формулы. Ближайший вы можете получить это CELL формула, но (по крайней мере, с Excel 2003) она не возвращает цвет ячейки.

было бы довольно легко реализовать с помощью VBA:

Public Function myColor(r As Range) As Integer
    myColor = r.Interior.ColorIndex
End Function

затем на листе:

=mycolor(A1)

хотя это напрямую не касается вашего вопроса, Вы можете сортировать данные по цвету ячейки в Excel (что затем позволяет довольно легко помечать все записи определенным цветом одинаково и, следовательно, условие на этой метке).

в Excel 2010 Вы можете сделать это, перейдя в Data -> Sort -> Sort на "цвет ячейки".


У меня была аналогичная проблема, когда мне нужно было показать значение только из другой ячейки Excel, если шрифт был черным. Я создал эту функцию: 'Option Explicit

функция blackFont (R как диапазон) как логическая Если r.Шрифт.Color = 0 Тогда blackFont = True Еще blackFont = False Конец, Если

Конец Функции `

в моей ячейке у меня есть эта формула: =IF(blackFont(Y51),Y51," ")

Это хорошо сработало для меня, чтобы проверить черный шрифт и показать только значение в ячейке Y51, если у нее был черный шрифт.


единственное простое решение, которое я применил, - это воссоздать основное условие, которое делает основные моменты как IF состояние и использовать его на IF формула. Что-то вроде этого. В зависимости от условия выделения формула изменится, но я думаю, что это должно быть воссоздано (es. выделить больше 20).

=IF(B3>20,(B3)," ")