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)," ")