Excel 根据颜色比较两个单元格

Excel 根据颜色比较两个单元格,excel,excel-formula,excel-2010,vba,Excel,Excel Formula,Excel 2010,Vba,我想根据两个细胞的颜色来比较它们 我创建了以下函数。如果单元格中的两种颜色匹配,则应写入相同的并将单元格中的涂成绿色,否则“更改”并将其涂成红色 然而,我目前得到: 在#Value单元格中,我的公式是=ColorComparer(H4;C4) 您可以在下面找到我创建的vba函数: Function ColorComparer(rColor As Range, rRange As Range) Dim rCell As Range Dim lCol As Long Dim vResult lC

我想根据两个细胞的颜色来比较它们

我创建了以下函数。如果单元格中的两种颜色匹配,则应写入
相同的
并将单元格中的
涂成绿色
,否则“更改”并将其涂成红色

然而,我目前得到:

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

您可以在下面找到我创建的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
我真的很感谢你的回复


致以最良好的祝愿

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

更改列表:

  • rCell
    替换为
    rRange
    参数<代码>rCell未分配任何值
  • ColorIndex
    替换为完整的RGB值
    Color
  • 注释了
    vResult.Interior
    两行。vResult不指向当前单元格,即使它指向当前单元格,也有许多:
由工作表单元格中的公式调用的用户定义函数无法更改Microsoft Excel的环境。这意味着该函数不能执行以下任何操作:

在电子表格上插入、删除或格式化单元格

更改另一个单元格的值

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

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

向工作簿中添加名称

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

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

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

Application.Volatile True
更改单元格的背景不会触发重新计算


我知道的唯一解决方案是在工作表的
SelectionChanged
Activate
事件处理程序中触发工作表重新计算

我根本不懂你的代码。你想干什么?你有两张桌子,想要比较桌子上的颜色,还是我读错了?@BogdanBanciu-Thx获取你的答案。我的颜色函数的目标是比较图片中两个表的单元格的颜色。作为输入,我给我的函数每个表一个单元格,并按颜色进行比较。作为输出,我希望在我的第三个表中使用背景色<代码>红色<代码>或背景色<代码>绿色<代码>
Application.Volatile True