Используйте цвет ячейки как условие в инструкции 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)," ")