比较两个单元格的颜色

我想根据他们的颜色比较两个单元格。

我创build了以下function。 如果单元格中的两种颜色匹配,则应该在单元格中写入“ Same并将单元格green ,否则“更改”并将其着色为red

但是,我目前正在:

在这里输入图像说明

=ColorComparer(H4;C4) #Value格中,我的公式是=ColorComparer(H4;C4)

下面你可以find我创build的vba函数:

 Function ColorComparer(rColor As Range, rRange As Range) Dim rCell As Range Dim lCol As Long Dim vResult lCol = rColor.Interior.ColorIndex If rCell.Interior.ColorIndex = lCol Then vResult = "Same" vResult.Interior.ColorIndex = RGB(0,255,0) Else vResult = "Change" vResult.Interior.ColorIndex = RGB(255,0,0) End If ColorComparer = vResult End Function 

我真的apprecaite您的答复!

最好的祝福!

通过一些小的更改,您的UDF会给出正确的( Same/Change )结果:

 Function ColorComparer(rColor As Range, rRange As Range) As String Dim rCell As Range Dim lCol As Long Dim vResult as String lCol = rColor.Interior.Color If rRange.Interior.Color = lCol Then vResult = "Same" ' vResult.Interior.ColorIndex = RGB(0, 255, 0) Else vResult = "Change" ' vResult.Interior.ColorIndex = RGB(255, 0, 0) End If ColorComparer = vResult End Function 

更改列表:

  • rRange参数replacerCellrCell没有分配任何值
  • ColorIndexreplace为完整的RGB值Color
  • 评论两个vResult.Interior 。 vResult不指向当前单元格,即使这样做, UDF也有一些限制 :

由工作表单元格中的公式调用的用户定义的函数不能更改Microsoft Excel的环境。 这意味着这样的function不能做到以下任何一项:

在电子表格中插入,删除或格式化单元格。

更改另一个单元格的值。

移动,重命名,删除或将工作表添加到工作簿。

更改任何环境选项,例如计算模式或屏幕视图。

将名称添加到工作簿。

设置属性或执行大多数方法。

您可以使用结果范围的条件格式来克服这些限制。

关于这个UDF最棘手的部分是重新计算。 即使您将其定义为volatile,并附加一行:

 Application.Volatile True 

改变单元格的背景不会触发重新计算。

我所知道的唯一解决scheme是触发工作表的SelectionChangedActivate事件处理程序中的工作表重新计算。