Цвета в функции ЕСЛИ (Microsoft Excel)
Стив хотел бы создать оператор IF (используя функцию рабочего листа) на основе цвета ячейки. Например, если у A1 зеленая заливка, он хочет вернуть слово «go», если у него красная заливка, он хочет вернуть слово «стоп», а если это любой другой цвет, вернуть слово «ни один» . Стив предпочитает не использовать для этого макрос.
К сожалению, невозможно решить эту задачу без использования макросов в той или иной форме. Ближайшим немакро-решением является создание имени, определяющего цвета, следующим образом:
-
Выберите ячейку A1.
-
Щелкните Вставить | Имя | Определить. Excel отображает диалоговое окно «Определить имя».
-
Используйте такое имя, как «mycolor» (без кавычек).
-
В поле «Ссылается на» введите следующие данные одной строкой:
-
Щелкните ОК.
Определив это имя, вы можете в любой ячейке ввести следующее:
=mycolor
В результате вы увидите текст, соответствующий цвету ячейки, в которую вы поместите эту формулу. Недостатком этого подхода, конечно же, является то, что он не позволяет ссылаться на ячейки, кроме той, в которую помещена формула.
Тогда решение состоит в том, чтобы использовать определяемую пользователем функцию, которая (по определению) является макросом. Макрос может проверить цвет, которым заполнена ячейка, а затем вернуть значение. Например, следующий пример возвращает одно из трех слов в зависимости от цвета целевой ячейки:
Function CheckColor1(range) If range.Interior.Color = RGB(256, 0, 0) Then CheckColor1 = "Stop" ElseIf range.Interior.Color = RGB(0, 256, 0) Then CheckColor1 = "Go" Else CheckColor1 = "Neither" End If End Function
Этот макрос оценивает значения RGB цветов в ячейке и возвращает строку на основе этих значений. Вы можете использовать функцию в ячейке следующим образом:
=CheckColor1(B5)
Если вы предпочитаете проверять индексные цвета вместо цветов RGB, тогда подойдет следующий вариант:
Function CheckColor2(range) If range.Interior.ColorIndex = 3 Then CheckColor2 = "Stop" ElseIf range.Interior.ColorIndex = 4 Then CheckColor2 = "Go" Else CheckColor2 = "Neither" End If End Function
Независимо от того, используете ли вы подход RGB или метод индекса цвета, вы захотите убедиться, что значения, используемые в макросах, отражают фактические значения, используемые для цветов в тестируемых ячейках. Другими словами, Excel позволяет использовать разные оттенки зеленого и красного, поэтому вам нужно убедиться, что значения RGB и значения индекса цвета, используемые в макросах, соответствуют тем, которые используются для цветовых оттенков в ваших ячейках.
Один из способов сделать это — использовать очень простой макрос, который ничего не делает, кроме как возвращает значение индекса цвета:
Function GetFillColor(Rng As Range) As Long GetFillColor = Rng.Interior.ColorIndex End Function
Теперь на своем листе вы можете использовать следующее:
=GetFillColor(B5)
В результате отображается значение индекса цвета ячейки B5. Предполагая, что ячейка B5 отформатирована с использованием одного из ожидаемых вами цветов (красного или зеленого), вы можете вставить значение индекса обратно в более ранние макросы, чтобы получить желаемые результаты. Однако вы можете просто пропустить этот шаг и полагаться на значение, возвращаемое GetFillColor, чтобы составить формулу ЕСЛИ следующим образом:
=IF(GetFillColor(B5)=4,"Go", IF(GetFillColor(B5)=3,"Stop", "Neither"))
Следует иметь в виду, что эти функции (независимо от того, смотрите ли вы на значения цвета RGB или значения индекса цвета) проверяют явное форматирование ячейки. Они не принимают во внимание какое-либо неявное форматирование, например, применяемое посредством условного форматирования.
Чтобы узнать о других хороших идеях, формулах и функциях работы с цветами, обратитесь к этой странице на веб-сайте Чипа Пирсона:
http://www.cpearson.com/excel/colors.aspx
_Примечание: _
Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.
link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера]
.
ExcelTips — ваш источник экономичного обучения Microsoft Excel.
Этот совет (10780) относится к Microsoft Excel 2007 и 2010. Вы можете найти версию этого совета для более старого интерфейса меню Excel здесь:
link: / excel-Colors_in_an_IF_Function [Цвета в функции IF]
.