Excel: Могу ли я создать условную формулу на основе цвета ячейки?

Я новичок и пытаюсь создать формулу, которая изменяет содержимое ячейки A1 в зависимости от цвета ячейки в B2;

Если ячейка B2 = [красный цвет], отображается FQS.

Если ячейка B2 = [желтый цвет], отобразите SM.

Это зависит от цвета заливки ячейки.

3 ответа

К сожалению, не существует прямого способа сделать это с помощью одной формулы. Однако существует довольно простой обходной путь.

На ленте Excel перейдите в "Формулы" и нажмите "Диспетчер имен". Выберите "Новый", а затем введите "CellColor" в качестве "Имя". Перейдите к части "Относится к" и введите следующее:

=GET.CELL(63,OFFSET(INDIRECT("RC",FALSE),1,1))

Нажмите OK, затем закройте окно "Диспетчер имен".

Теперь в ячейку A1 введите следующее:

=IF(CellColor=3,"FQS",IF(CellColor=6,"SM",""))

Это вернет FQS для красного и SM для желтого. Для любого другого цвета ячейка останется пустой.

*** Если значение в A1 не обновляется, нажмите "F9" на клавиатуре, чтобы заставить Excel обновлять вычисления в любой точке (или если цвет в B2 когда-либо изменяется).

Ниже приведен справочник для списка цветов заливки ячейки (доступно 56), если вы когда-нибудь захотите расширить: http://www.smixe.com/excel-color-pallette.html

Приветствия.

::Редактировать::

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

В любом случае, если вы хотите упростить вещи, вместо этого вы можете использовать эту формулу в Name Manager:

=GET.CELL(63,Sheet1!B2)

Вы можете использовать эту функцию (я нашел ее здесь: http://excelribbon.tips.net/T010780_Colors_in_an_IF_Function.html):

Function GetFillColor(Rng As Range) As Long
    GetFillColor = Rng.Interior.ColorIndex
End Function

Вот объяснение того, как создавать пользовательские функции: http://www.wikihow.com/Create-a-User-Defined-Function-in-Microsoft-Excel

В вашем рабочем листе вы можете использовать следующее: =GetFillColor(B5)

Проверка строки на цвет фона

Спасибо за эти отличные ответы!

Мне особенно понравился ответ astef ,

      Function GetFillColor(Rng As Range) As Long
    GetFillColor = Rng.Interior.ColorIndex
End Function

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

Теперь это может быть производительным или нет, но это простой способ написать формулу. Это формула в столбце состояния, которая будет проверять другие столбцы, выбранные для любых ячеек с желтым фоном, с помощью макроса GetFillColor из ответа astef.

      =IF(OR(GetFillColor([@Fees])=6,
GetFillColor([@Interest])=6,
GetFillColor([@Borrowing])=6),
 "yellow", "none")

Это вернет желтый цвет в ячейку, если в ячейках в формулах GetFillColor (ячейка) есть желтый фон (индекс цвета 6). Еще одним преимуществом написания макроса GetFillColor() является то, что вы можете использовать его, чтобы узнать, какой именно цвет вы ищете, просто выбрав пустую ячейку и написав =GetFillColor(your_cell), где ваша ячейка — это ячейка, цвет которой вам нужен номер индекса цвета.

Чтобы изменить это по своему вкусу, измените аргументы GetFillColor() в формуле =ЕСЛИ(ИЛИ выше, чтобы они были ячейками, в которых может быть цвет, и измените 6 на любой номер индекса цвета, который вы хотите найти, и измените два "" аргументы в конце любых сообщений, которые вы хотите. Первый печатается, если цвет найден, второй, если нет. Помните, что вы можете использовать макрос GetFillColor, чтобы вернуть цвет любой ячейки, которая вам нравится, чтобы узнать, какой цвет индекс для использования в формулах.

Надеюсь, поможет. Я открыт для комментариев по улучшению.

Другие вопросы по тегам