Стив хотел бы создать оператор IF (используя функцию рабочего листа) на основе цвета ячейки. Например, если у A1 зеленая заливка, он хочет вернуть слово «go», если у него красная заливка, он хочет вернуть слово «стоп», а если это любой другой цвет, вернуть слово «ни один» . Стив предпочитает не использовать для этого макрос.

К сожалению, невозможно решить эту задачу без использования макросов в той или иной форме. Ближайшим немакро-решением является создание имени, определяющего цвета, следующим образом:

  1. Выберите ячейку A1.

  2. Щелкните Вставить | Имя | Определить. Excel отображает диалоговое окно «Определить имя».

  3. Используйте такое имя, как «mycolor» (без кавычек).

  4. В поле «Ссылается на» введите следующие данные одной строкой:

  5. Щелкните ОК.

Определив это имя, вы можете в любой ячейке ввести следующее:

=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].