Использовать цвет ячейки как условие в выражении if (function)
Я пытаюсь получить ячейку для выполнения функции, основанной на цвете 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?
Спасибо,
Иордания
Ответы
Ответ 1
Вы не можете использовать 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 (UDF). Они должны отражать поведение функций Excel, которые не могут читать цветовое форматирование ячейки. (Эта функция может не работать в будущей версии Excel.)
Намного лучше, если вы основываете формулу на исходное условие (решение), которое делает ячейку желтой в первую очередь. Или, альтернативно, запустите процедуру Sub для заполнения значений True или False (хотя, конечно, эти значения больше не будут связаны с форматированием исходных ячеек).
Ответ 2
Я не верю, что есть способ получить цвет ячейки из формулы. Самое близкое, что вы можете получить, это формула CELL
, но (по крайней мере, в Excel 2003), она не возвращает цвет ячейки.
Было бы довольно легко реализовать с помощью VBA:
Public Function myColor(r As Range) As Integer
myColor = r.Interior.ColorIndex
End Function
Затем на листе:
=mycolor(A1)
Ответ 3
Хотя это напрямую не касается вашего вопроса, вы можете сортировать свои данные по цвету ячеек в Excel (что делает его довольно простым обозначать все записи определенным цветом таким же образом и, следовательно, условие на эту метку).
В Excel 2010 вы можете сделать это, перейдя в Data → Sort → Sort On "Color Cell".
Ответ 4
У меня была аналогичная проблема, когда мне нужно было показывать только значение из другой ячейки Excel, если шрифт был черным. Я создал эту функцию:
`Option Explicit
Функция blackFont (r As Range) As Boolean Если r.Font.Color = 0 Тогда blackFont = True еще blackFont = False End If
Конечная функция
`
В моей ячейке у меня есть эта формула:
=IF(blackFont(Y51),Y51," ")
Это сработало для меня, чтобы проверить черный шрифт и показывать только значение в ячейке Y51, если у него черный шрифт.
Ответ 5
Единственное удобное решение, которое я применил, - это воссоздать основное условие, которое делает основные моменты как условие IF
, и использовать его в формуле IF
. Что-то вроде этого. В зависимости от условия выделения формула изменится, но я думаю, что ее нужно воссоздать (например, выделить более 20).
=IF(B3>20,(B3)," ")