if语句(函数)中使用单元格的颜色作为条件

我试图让一个单元格执行基于单元格的Hilight颜色的函数。

这是我目前的function:

=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? 。 有没有什么办法可以做到这一点在单元格中的function,或者是绝对需要的VBA?

谢谢,

约旦

您不能在公式中使用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 

但是,我不build议这样做:这不是用户定义的VBA函数(UDF)是如何使用的。 它们应该反映Excel函数的行为,它不能读取单元格的颜色格式。 (此function可能无法在将来的Excel版本中使用。)

原来的条件 (决定)基础上制定一个公式,使得单元格变成黄色,这是好得多的。 或者,也可以运行Sub过程来填写True或False值(当然,这些值将不再链接到原始单元格的格式)。

我不相信有任何方法从公式中获得单元格的颜色。 您可以得到的最接近的是CELL公式,但是(至less在Excel 2003中),它不会返回单元格的颜色。

用VBA实现起来会很容易:

 Public Function myColor(r As Range) As Integer myColor = r.Interior.ColorIndex End Function 

然后在工作表中:

 =mycolor(A1) 

虽然这不能直接解决你的问题,但实际上你可以用Excel中的单元格颜色对数据进行sorting(这样就可以很容易地用相同的方法用特定的颜色来标记所有的logging,因此可以根据这个标签来定义)。

在Excel 2010中,您可以通过转到数据 – >sorting – >sorting“单元格颜色”来执行此操作。

我有一个类似的问题,如果字体是黑色的,我只需要显示另一个Excel单元格的值。 我创build了这个函数:Option Explicit

函数blackFont(r作为范围)作为布尔如果r.Font.Color = 0然后blackFont = True否则blackFont = False结束如果

结束function`

在我的单元格中,我有这个公式: =IF(blackFont(Y51),Y51," ")

这对我来说testing一个黑色的字体很好,只显示在Y51单元格中的值,如果它有一个黑色的字体。

我已经应用的唯一简单的解决scheme是重新创build作为IF条件的亮点的主要条件,并在IF公式中使用它。 像这样的东西。 根据亮点条件,公式会改变,但是我认为应该重新创build(例如突出显示大于20)。

 =IF(B3>20,(B3)," ")