11

我试图让一个单元格根据单元格的高亮颜色执行功能。

这是我目前拥有的功能:

=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?. 有什么方法可以作为单元格中的函数执行此操作,还是绝对需要 VBA?

谢谢,

约旦

4

5 回答 5

6

您不能Interior.ColorIndex在公式中使用 VBA ( ),这就是您收到错误的原因。

没有 VBA 就不可能做到这一点。

Function YellowIt(rng As Range) As Boolean
    If rng.Interior.ColorIndex = 6 Then
        YellowIt = True
    Else
        YellowIt = False
    End If
End Function

但是,我不建议这样做:这不是用户定义的 VBA 函数 (UDF) 的用途。它们应该反映无法读取单元格颜色格式的 Excel 函数的行为。(此功能可能不适用于未来版本的 Excel。)

最好将公式基于最初使单元格变黄的原始条件(决策)。或者,或者,运行 Sub 过程来填写 True 或 False 值(当然,这些值将不再链接到原始单元格的格式)。

于 2013-09-13T19:12:03.370 回答
3

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

使用 VBA 很容易实现:

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

然后在工作表中:

=mycolor(A1)
于 2013-09-13T19:11:43.983 回答
2

尽管这不能直接解决您的问题,但您实际上可以在 Excel 中按单元格颜色对数据进行排序(这样就可以很容易地以相同的方式用特定颜色标记所有记录,因此,以此标签为条件)。

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

于 2015-01-27T09:27:55.330 回答
1

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

函数 blackFont(r As Range) As Boolean If r.Font.Color = 0 Then blackFont = True Else blackFont = False End If

结束函数`

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

这对我来说很有效,可以测试黑色字体,并且只在 Y51 单元格中显示黑色字体时的值。

于 2015-03-05T17:20:03.997 回答
0

我应用的唯一简单解决方案是重新创建将突出显示作为条件的主要IF条件并将其用于IF公式。像这样的东西。根据突出显示条件,公式会改变,但我认为应该重新创建(例如突出显示大于 20)。

=IF(B3>20,(B3)," ")
于 2015-07-23T13:03:34.160 回答