【问题标题】:Excel: Can I create a Conditional Formula based on the Color of a Cell?Excel:我可以根据单元格的颜色创建条件公式吗?
【发布时间】:2022-02-17 02:17:15
【问题描述】:

我是一个初学者,正在尝试创建一个公式,根据 B2 中单元格的颜色来修改单元格 A1 的内容;

如果单元格 B2 = [红色],则显示 FQS。

如果单元格 B2 = [黄色] 则显示 SM。

这是基于单元格填充颜色的条件。

【问题讨论】:

  • 我尝试了 if 函数。 =If(B2=255,0,0,'FQS') If(B2=255,255,0,'SM'))
  • 当单元格有颜色但没有使用“条件格式”着色时,建议的答案有效。当单元格的值不正确时,我进行了验证,它有条件地格式化为背景颜色为“红色”。下面的方法不检测具有条件格式的单元格。 @德里克

标签: excel excel-formula


【解决方案1】:

不幸的是,没有直接的方法可以用一个公式来做到这一点。但是,存在一个相当简单的解决方法。

在 Excel 功能区上,转到“公式”并单击“名称管理器”。选择“新建”,然后输入“CellColor”作为“名称”。跳转到“引用”部分并输入以下内容:

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

点击确定,然后关闭“名称管理器”窗口。

现在,在单元格 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)。

无论哪种方式,如果您想简化事情,您可以在名称管理器中使用以下公式:

=GET.CELL(63,Sheet1!B2)

【讨论】:

  • 这个效果很好,我之前实现的时候一定是搞错了!
  • 我赢了赏金吗? :)
  • 当然。我必须等待 24 小时才能授予它,但绝对可以。它就像一个魅力!非常聪明的解决方案。
  • 这似乎忽略了 excel 的条件格式功能设置的颜色 :(
  • @Derrik。当我想查看一个单元格的背景颜色是否为红色时,我该怎么办,如果是,另一个单元格应该是绿色的。 ??我可以这样做吗?
【解决方案2】:

你可以使用这个功能(我在这里找到它: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)

【讨论】:

    【解决方案3】:

    检查行的背景颜色

    感谢您提供这些出色的答案!

    我特别喜欢astef's的回答,

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

    通过编写上述宏(alt+f11 打开宏)检查单元格的背景颜色,我使用该函数轻松创建了一个版本,用于检查行中三个单元格的范围是否具有背景黄色。

    现在这可能是有效的,也可能不是,但它是编写公式的一种简单方法。这是状态列中的公式,它将使用 astef 答案中的 GetFillColor 宏检查为任何具有黄色背景的单元格选择的其他列。

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

    如果在 GetFillColor(cell) 公式中的单元格中有任何黄色背景(颜色索引 6),这将向单元格返回黄色。编写 GetFillColor() 宏的另一个优点是,您可以使用它来查找您正在搜索的颜色,只需选择一个空单元格并编写 =GetFillColor(your_cell) ,其中您的单元格是具有以下颜色的单元格你想要颜色索引号。

    要根据自己的喜好更改此设置,请将上面 =IF(OR 公式中的 GetFillColor() 参数更改为可能是颜色的单元格,并将 6 更改为您想要查找的任何颜色索引号,然后将末尾的两个“”参数更改为您想要的任何消息。如果找到颜色,则打印第一个,如果没有,则打印第二个。请记住,您可以使用 GetFillColor 宏返回您喜欢的任何单元格的颜色,以便知道在公式中使用什么颜色索引。

    希望对您有所帮助。我愿意改进 cmets。

    【讨论】:

      猜你喜欢
      • 2015-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-13
      • 2019-10-25
      • 2023-04-07
      • 1970-01-01
      相关资源
      最近更新 更多